欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

PHP在线书签系统分享

程序员文章站 2022-04-18 22:37:29
本文为大家分享了php在线书签系统,感兴趣的小伙伴们可以参考一下 1、需求分析 首先,需要识别每个用户。应该有验证机制。 其次,需要保存单个用户的书签。用户应该能够添...

本文为大家分享了php在线书签系统,感兴趣的小伙伴们可以参考一下

1、需求分析
首先,需要识别每个用户。应该有验证机制。
其次,需要保存单个用户的书签。用户应该能够添加和删除书签。
再次,需要根据对他们的了解,向用户建议他们可能感兴趣的站点。

2、解决方案
2.1 系统流程图

PHP在线书签系统分享

2.2 phpbookmark中的文件列表

PHP在线书签系统分享

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