程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP在線書簽系統分享

PHP在線書簽系統分享

編輯:PHP綜合

本文為大家分享了PHP在線書簽系統,感興趣的小伙伴們可以參考一下

1、需求分析
首先,需要識別每個用戶。應該有驗證機制。
其次,需要保存單個用戶的書簽。用戶應該能夠添加和刪除書簽。
再次,需要根據對他們的了解,向用戶建議他們可能感興趣的站點。

2、解決方案
2.1 系統流程圖

2.2 PHPbookmark中的文件列表


3、實現數據庫

create database bookmarks; 
use bookmarks; 
 
create table user ( 
 username varchar(16) primary key, 
 passwd char(40) not null, 
 email varchar(100) not null 
); 
 
create table bookmark ( 
 username varchar(16) not null, 
 bm_URL varchar(255) not null, 
 index (username), 
 index (bm_URL) 
); 
 
grant select, insert, update, delete 
on bookmarks.* 
to bm_user@localhost identified by 'password'; 

4、實現基本的網站
4.1 login.php

<?php 
 
/** 
 * 包含系統登錄表單的頁面 
 */ 
  //require_once語句和require語句完全相同,唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。 
  require_once('bookmark_fns.php');  //應用程序的包含文件集合 
   
  do_html_header(''); //HTML標題 
   
  display_site_info();//HTML站點信息 
  display_login_form();//HTML登錄信息 
   
  do_html_footer();  //HTML頁腳 
?> 

4.2 bookmark_fns.php

<?php 
 
/** 
 * 應用程序的包含文件集合 
 */ 
  //require_once語句和require語句完全相同,唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。 
  require_once('data_valid_fns.php'); //確認用戶輸入數據有效的函數 
  require_once('db_fns.php'); // 連接數據庫的函數 
  require_once('user_auth_fns.php'); //用戶身份驗證的函數 
  require_once('output_fns.php'); //以HTML形式格式化輸出的函數 
  require_once('url_fns.php');  //增加和刪除書簽的函數 
?> 

5、實現用戶身份驗證
5.1 register_form.php

<?php 
 
/** 
 * 系統中用戶注冊表單 
 */ 
  //require_once語句和require語句完全相同,唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。 
  require_once('bookmark_fns.php'); 
  do_html_header('User Registration');  //HTML標題 
   
  display_registeration_form();  //輸出注冊表單 
   
  do_html_footer();  //HTML頁腳 
?> 

5.2 register_new.php

<?php 
 
/** 
 * 處理新注冊信息的腳本 
 */ 
  //require_once語句和require語句完全相同,唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。 
  require_once('bookmark_fns.php'); 
   
  //創建變量 
  $email = $_POST['email']; 
  $username = $_POST['username']; 
  $passwd = $_POST['passwd']; 
  $passwd2 = $_POST['passwd2']; 
 
  //開啟會話 
  session_start(); 
   
  try 
  { 
    //檢查表單是否填寫滿 
    if(!filled_out($_POST)) 
    { 
      throw new exception('You have not filled the form out correctly - please go back and try again.'); 
    } 
     
    //檢查郵件地址是否有效 
    if(!valid_email($email)) 
    { 
      throw new exception('That is not a vald email address. Please go back try again.'); 
    } 
     
    //檢查兩次輸入密碼是否相同 
    if($passwd != $passwd2) 
    { 
      throw new exception('The passwords you entered do not match - please go back try again.'); 
    } 
     
    //檢查密碼長度是否合格 
    if((strlen($passwd) < 6) || (strlen($passwd) > 16)) 
    { 
      throw new exception('Your password must be between 6 and 16 characters Please go back and try again.'); 
    } 
     
    //嘗試注冊 
    register($username,$email,$passwd); 
     
    //注冊會話變量 
    $_SESSION['valid_user'] = $username; 
     
    //提供成員頁面鏈接 
    do_html_header('Registration successful'); //HTML標題 
    echo 'Your registration was successful.Go to the members page to start setting up your bookmarks!'; //輸出URL 
    do_html_URL('member.php','Go to members page'); //HTML頁腳 
    do_html_footer();  //HTML頁腳 
  } 
  catch(exception $e) 
  { 
    do_html_header('Problem:'); 
    echo $e->getMessage(); 
    do_html_footer(); 
    exit; 
  } 
?> 

5.3 member.php

<?php 
 
/** 
 * 用戶的主頁面,包含該用戶所有的當前書簽 
 */ 
  //require_once語句和require語句完全相同,唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。 
  require_once('bookmark_fns.php'); 
  session_start(); 
   
  //創建變量 
  $username = @$_POST['username']; 
  $passwd = @$_POST['passwd']; 
   
  if($username && $passwd) 
  { 
    try 
    { 
      login($username,$passwd); 
      //如果該用戶在數據庫中,則注冊會話變量 
      $_SESSION['valid_user'] = $username; 
    } 
    catch(exception $e) 
    { 
      //登錄不成功 
      do_html_header('Problem:'); 
      echo 'You could not be logged in. You must be logged in to view this page.'; 
      do_html_URL('login.php','Login'); 
      do_html_footer(); 
      exit; 
    } 
  } 
   
  do_html_header('Home'); 
  check_valid_user(); 
   
  //獲取用戶的書簽 
  if($url_array = get_user_urls($_SESSION['valid_user'])) 
    display_user_urls($url_array); 
  //獲取用戶菜單選項 
  display_user_menu(); 
 
  do_html_footer(); 
?> 

5.4 logout.php

<?php 
 
/** 
 * 將用戶注銷的腳本 
 */ 
  //require_once語句和require語句完全相同,唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。 
  require_once('bookmark_fns.php'); 
  session_start(); 
  $old_user = $_SESSION['valid_user']; 
   
  //注銷會話變量 
  unset($_SESSION['valid_user']); 
  $result_dest = session_destroy(); 
   
  do_html_header('Logging Out'); 
   
  if(!empty($old_user)) 
  { 
    if($result_dest)  //登出成功 
    { 
      echo 'Logged out.<br />'; 
      do_html_URL('login.php','Login'); 
    } 
    else  //不成功 
    { 
      echo 'Could not log you out.<br />'; 
    } 
  } 
  else 
  { 
    echo 'You were not logged in, and so have not been logged ot.<br />'; 
    do_html_URL('login.php','Login'); 
  } 
  do_html_footer(); 
?> 

5.5 change_passwd.php

<?php 
 
/** 
 * 修改數據庫中用戶密碼的表單 
 */ 
  //require_once語句和require語句完全相同,唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。 
  require_once('bookmark_fns.php'); 
  session_start(); 
  do_html_header('Changing password'); 
   
  //創建變量 
  $old_passwd = $_POST['old_passwd']; 
  $new_passwd = $_POST['new_passwd']; 
  $new_passwd2 = $_POST['new_passwd2']; 
   
  try 
  { 
    check_valid_user(); 
    if(!filled_out($_POST)) 
      throw new exception('You have not filled out the form completely.Please try again.'); 
     
    if($new_passwd != $new_passwd2) 
      throw new exception('Passwords entered were not the same. Not changed.'); 
       
    if((strlen($new_passwd) > 16) || (strlen($new_passwd) < 6)) 
    { 
      throw new exception('New password must be between 6 and 16 characters. Try again.'); 
    } 
     
    //嘗試修改 
    change_password($_SESSION['valid_user'],$old_passwd,$new_passwd); 
    echo 'Password changed.'; 
  } 
  catch(exception $e) 
  { 
    echo $e ->getMessage(); 
  } 
  display_user_menu(); 
  do_html_footer(); 
?> 

5.6 forgot_paswd.php

<?php 
 
/** 
 * 重新設置遺忘密碼的腳本 
 */ 
  //require_once語句和require語句完全相同,唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。 
  require_once('bookmark_fns.php'); 
  do_html_header("Resetting password"); 
   
  //創建變量 
  $username = $_POST['username']; 
   
  try 
  { 
    $passwd = reset_password($username); 
    notify_password($username,$passwd); 
    echo 'Your new password has been emailed to you.<br />'; 
  } 
  catch(exception $e) 
  { 
    echo 'Your password could not be reset - please try again later.'; 
  } 
  do_html_URL('login.php','Login'); 
  do_html_footer(); 
?> 

6、實現書簽的存儲和檢索
6.1 add_bms.php

<?php 
 
/** 
 * 添加書簽的表單 
 */ 
  //require_once語句和require語句完全相同,唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。 
  require_once('bookmark_fns.php'); 
  session_start(); 
   
  //創建變量 
  $new_url = $_POST['new_url']; 
   
  do_html_header('Adding bookmarks'); 
   
  try 
  { 
    check_valid_user(); //檢查用戶有效性 
    if(!filled_out($new_url))  //檢查表單是否填寫 
      throw new exception('Form not completely filled out.'); 
    if(strstr($new_url,'http://') === false) 
      $new_url = 'http://'. $new_url; 
    if(!(@fopen($new_url,'r'))) //可以調用fopen()函數打開URL,如果能打開這個文件,則假定URL是有效的 
      throw new exception('Not a valid URL.'); 
    add_bm($new_url);  //將URL添加到數據庫中 
    echo 'Bookmark added.'; 
    if($url_array = get_user_urls($_SESSION['valid_user'])) 
      display_user_urls($url_array); 
  } 
  catch(exception $e) 
  { 
    echo $e ->getMessage(); 
  } 
  display_user_menu(); 
  do_html_footer(); 
?> 

6.2 delete_bms.php

<?php 
 
/** 
 * 從用戶的書簽列表中刪除選定書簽的腳本呢 
 */ 
  //require_once語句和require語句完全相同,唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。 
  require_once('bookmark_fns.php'); 
  session_start(); 
   
  //創建變量 
  $del_me = @$_POST['del_me']; 
  $valid_user = $_SESSION['valid_user']; 
   
  do_html_header('Deleting bookmarks'); 
  check_valid_user(); 
   
  if(!filled_out($del_me))  // 
  { 
    echo '<p>You have not chosen any bookmarks to delete.<br />Please try again.</p>'; 
    display_user_menu(); 
    do_html_footer(); 
    exit; 
  } 
  else 
  { 
    if(count($del_me) > 0) 
    { 
      foreach($del_me as $url) 
      { 
        if(delete_bm($valid_user,$url)) 
        { 
          echo 'Deleted '. htmlspecialchars($url) .'.<br />'; 
        } 
        else 
        { 
          echo 'Could not delete '. htmlspecialchars($url) .'.<br />'; 
        } 
      } 
    } 
    else 
    { 
      echo 'No bookmarks selected for deletion'; 
    } 
  } 
  if($url_array = get_user_urls($valid_user)) 
  { 
    display_user_urls($url_array); 
  } 
  display_user_menu(); 
  do_html_footer(); 
?> 

6.3 recommend.php

<?php 
 
/** 
 * 基於用戶以前的操作,推薦用戶可能感興趣的書簽 
 */ 
  //require_once語句和require語句完全相同,唯一區別是PHP會檢查該文件是否已經被包含過,如果是則不會再次包含。 
  require_once('bookmark_fns.php'); 
  session_start(); 
  do_html_header('Recommending URLs'); 
  try 
  { 
    check_valid_user(); 
    $urls = recommend_urls($_SESSION['valid_user']); 
    display_recommended_urls($urls); 
  } 
  catch(exception $e) 
  { 
    echo $e ->getMessage(); 
  } 
  display_user_menu(); 
  do_html_footer(); 
?> 

以上就是PHP在線書簽系統的詳細代碼,希望對大家的學習有所幫助。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved