首页 > 编程 > PHP > 正文

PHP在线书签系统分享

2019-11-21 22:30:28
字体:
来源:转载
供稿:网友

本文为大家分享了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在线书签系统的详细代码,希望对大家的学习有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表