您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“PHP怎么實(shí)現(xiàn)在線書簽系統(tǒng)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“PHP怎么實(shí)現(xiàn)在線書簽系統(tǒng)”吧!
1、需求分析
首先,需要識別每個用戶。應(yīng)該有驗(yàn)證機(jī)制。
其次,需要保存單個用戶的書簽。用戶應(yīng)該能夠添加和刪除書簽。
再次,需要根據(jù)對他們的了解,向用戶建議他們可能感興趣的站點(diǎn)。
2、解決方案
2.1 系統(tǒng)流程圖
2.2 PHPbookmark中的文件列表
3、實(shí)現(xiàn)數(shù)據(jù)庫
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、實(shí)現(xiàn)基本的網(wǎng)站
4.1 login.php
<?php /** * 包含系統(tǒng)登錄表單的頁面 */ //require_once語句和require語句完全相同,唯一區(qū)別是PHP會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含。 require_once('bookmark_fns.php'); //應(yīng)用程序的包含文件集合 do_html_header(''); //HTML標(biāo)題 display_site_info();//HTML站點(diǎn)信息 display_login_form();//HTML登錄信息 do_html_footer(); //HTML頁腳 ?>
4.2 bookmark_fns.php
<?php /** * 應(yīng)用程序的包含文件集合 */ //require_once語句和require語句完全相同,唯一區(qū)別是PHP會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含。 require_once('data_valid_fns.php'); //確認(rèn)用戶輸入數(shù)據(jù)有效的函數(shù) require_once('db_fns.php'); // 連接數(shù)據(jù)庫的函數(shù) require_once('user_auth_fns.php'); //用戶身份驗(yàn)證的函數(shù) require_once('output_fns.php'); //以HTML形式格式化輸出的函數(shù) require_once('url_fns.php'); //增加和刪除書簽的函數(shù) ?>
5、實(shí)現(xiàn)用戶身份驗(yàn)證
5.1 register_form.php
<?php /** * 系統(tǒng)中用戶注冊表單 */ //require_once語句和require語句完全相同,唯一區(qū)別是PHP會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含。 require_once('bookmark_fns.php'); do_html_header('User Registration'); //HTML標(biāo)題 display_registeration_form(); //輸出注冊表單 do_html_footer(); //HTML頁腳 ?>
5.2 register_new.php
<?php /** * 處理新注冊信息的腳本 */ //require_once語句和require語句完全相同,唯一區(qū)別是PHP會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含。 require_once('bookmark_fns.php'); //創(chuàng)建變量 $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標(biāo)題 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 /** * 用戶的主頁面,包含該用戶所有的當(dāng)前書簽 */ //require_once語句和require語句完全相同,唯一區(qū)別是PHP會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含。 require_once('bookmark_fns.php'); session_start(); //創(chuàng)建變量 $username = @$_POST['username']; $passwd = @$_POST['passwd']; if($username && $passwd) { try { login($username,$passwd); //如果該用戶在數(shù)據(jù)庫中,則注冊會話變量 $_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); //獲取用戶菜單選項(xiàng) display_user_menu(); do_html_footer(); ?>
5.4 logout.php
<?php /** * 將用戶注銷的腳本 */ //require_once語句和require語句完全相同,唯一區(qū)別是PHP會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含。 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 /** * 修改數(shù)據(jù)庫中用戶密碼的表單 */ //require_once語句和require語句完全相同,唯一區(qū)別是PHP會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含。 require_once('bookmark_fns.php'); session_start(); do_html_header('Changing password'); //創(chuàng)建變量 $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 /** * 重新設(shè)置遺忘密碼的腳本 */ //require_once語句和require語句完全相同,唯一區(qū)別是PHP會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含。 require_once('bookmark_fns.php'); do_html_header("Resetting password"); //創(chuàng)建變量 $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、實(shí)現(xiàn)書簽的存儲和檢索
6.1 add_bms.php
<?php /** * 添加書簽的表單 */ //require_once語句和require語句完全相同,唯一區(qū)別是PHP會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含。 require_once('bookmark_fns.php'); session_start(); //創(chuàng)建變量 $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'))) //可以調(diào)用fopen()函數(shù)打開URL,如果能打開這個文件,則假定URL是有效的 throw new exception('Not a valid URL.'); add_bm($new_url); //將URL添加到數(shù)據(jù)庫中 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語句完全相同,唯一區(qū)別是PHP會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含。 require_once('bookmark_fns.php'); session_start(); //創(chuàng)建變量 $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語句完全相同,唯一區(qū)別是PHP會檢查該文件是否已經(jīng)被包含過,如果是則不會再次包含。 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怎么實(shí)現(xiàn)在線書簽系統(tǒng)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。