温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

PHP怎么实现在线书签系统

发布时间:2021-08-06 11:23:31 来源:亿速云 阅读:179 作者:chen 栏目:开发技术

本篇内容主要讲解“PHP怎么实现在线书签系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“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怎么实现在线书签系统”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI