目录
1、需求分析
2、解决方案
2.1 系统流程图" >2.1 系统流程图
2.2 PHPbookmark中的文件列表
3、实现数据库
4、实现基本的网站
4.1 login.php
4.2 bookmark_fns.php
5、实现用户身份验证
5.1 register_form.php" >5.1 register_form.php
5.2 register_new.php" >5.2 register_new.php
5.3 member.php" >5.3 member.php
5.4 logout.php" >5.4 logout.php
5.5 change_passwd.php" >5.5 change_passwd.php
5.6 forgot_paswd.php" >5.6 forgot_paswd.php
6、实现书签的存储和检索
6.1 add_bms.php" >6.1 add_bms.php
6.2 delete_bms.php" >6.2 delete_bms.php
6.3 recommend.php" >6.3 recommend.php
7、源代码
首页 后端开发 php教程 7、源代码

7、源代码

Jun 13, 2016 pm 12:24 PM
html passwd php require

一个简单的PHP在线书签系统

1、需求分析

   首先,需要识别每个用户。应该有验证机制。

其次,需要保存单个用户的书签。用户应该能够添加和删除书签。

再次,需要根据对他们的了解,向用户建议他们可能感兴趣的站点。


2、解决方案

2.1 系统流程图

2.2 PHPbookmark中的文件列表

文件名

描述

bookmarks.sql

创建PHPbookmark数据库SQL语句

login.php

包含系统登录表单的页面

register_form.php

系统中用户注册表单

register_new.php

处理新注册信息的脚本

forgot_form.php

用户忘记密码后需要填写的表单

forgot_passwd.php

重新设置遗忘密码的脚本

member.php

用户的主页面,包含该用户所有的当前书签

add_bm_form.php

添加书签的表单

add_bms.php

将书签真正添加到数据库中的脚本

delete_bms.php

从用户的书签列表中删除选定书签的脚本呢

recommend.php

基于用户以前的操作,推荐用户可能感兴趣的书签

change_passwd_form.php

用户修改密码时要填写的表单

change_passwd.php

修改数据库中用户密码的表单

logout.php

将用户注销的脚本

bookmark_fns.php

应用程序的包含文件集合

data_valid_fns.php

确认用户输入数据有效的函数

db_fns.php

连接数据库的函数

user_auth_fns.php

用户身份验证的函数

url_fns.php

增加和删除书签的函数

output_fns.php

HTML形式格式化输出的函数

bookmark.gif

PHPbookmarklogo图标



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, deleteon bookmarks.*to [email protected] identified by 'password';
登录后复制

4、实现基本的网站

4.1 login.php

<?php /** * @author switch * @copyright 2015 * 包含系统登录表单的页面 */    //require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。    require_once(&#39;bookmark_fns.php&#39;);   //应用程序的包含文件集合        do_html_header(&#39;&#39;); //HTML标题        display_site_info();//HTML站点信息    display_login_form();//HTML登录信息        do_html_footer();   //HTML页脚?>
登录后复制

4.2 bookmark_fns.php

<?php /** * @author switch * @copyright 2015 * 应用程序的包含文件集合 */    //require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。    require_once(&#39;data_valid_fns.php&#39;); //确认用户输入数据有效的函数    require_once(&#39;db_fns.php&#39;); // 连接数据库的函数    require_once(&#39;user_auth_fns.php&#39;);  //用户身份验证的函数    require_once(&#39;output_fns.php&#39;); //以HTML形式格式化输出的函数    require_once(&#39;url_fns.php&#39;);    //增加和删除书签的函数?>
登录后复制

5、实现用户身份验证

5.1 register_form.php

<?php /** * @author switch * @copyright 2015 * 系统中用户注册表单 */    //require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。    require_once(&#39;bookmark_fns.php&#39;);    do_html_header(&#39;User Registration&#39;);    //HTML标题        display_registeration_form();   //输出注册表单        do_html_footer();   //HTML页脚?>
登录后复制

5.2 register_new.php

<?php /** * @author switch * @copyright 2015 * 处理新注册信息的脚本 */    //require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。    require_once(&#39;bookmark_fns.php&#39;);        //创建变量    $email = $_POST[&#39;email&#39;];    $username = $_POST[&#39;username&#39;];    $passwd = $_POST[&#39;passwd&#39;];    $passwd2 = $_POST[&#39;passwd2&#39;];    //开启会话    session_start();        try    {        //检查表单是否填写满        if(!filled_out($_POST))        {            throw new exception(&#39;You have not filled the form out correctly - please go back and try again.&#39;);        }                //检查邮件地址是否有效        if(!valid_email($email))        {            throw new exception(&#39;That is not a vald email address. Please go back try again.&#39;);        }                //检查两次输入密码是否相同        if($passwd != $passwd2)        {            throw new exception(&#39;The passwords you entered do not match - please go back try again.&#39;);        }                //检查密码长度是否合格        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 /** * @author switch * @copyright 2015 * 用户的主页面,包含该用户所有的当前书签 */    //require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。    require_once(&#39;bookmark_fns.php&#39;);    session_start();        //创建变量    $username = @$_POST[&#39;username&#39;];    $passwd = @$_POST[&#39;passwd&#39;];        if($username && $passwd)    {        try        {            login($username,$passwd);            //如果该用户在数据库中,则注册会话变量            $_SESSION[&#39;valid_user&#39;] = $username;        }        catch(exception $e)        {            //登录不成功            do_html_header(&#39;Problem:&#39;);            echo &#39;You could not be logged in. You must be logged in to view this page.&#39;;            do_html_URL(&#39;login.php&#39;,&#39;Login&#39;);            do_html_footer();            exit;        }    }        do_html_header(&#39;Home&#39;);    check_valid_user();        //获取用户的书签    if($url_array = get_user_urls($_SESSION[&#39;valid_user&#39;]))        display_user_urls($url_array);    //获取用户菜单选项    display_user_menu();    do_html_footer();?>
登录后复制

5.4 logout.php

<?php /** * @author switch * @copyright 2015 * 将用户注销的脚本 */    //require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。    require_once(&#39;bookmark_fns.php&#39;);    session_start();    $old_user = $_SESSION[&#39;valid_user&#39;];        //注销会话变量    unset($_SESSION[&#39;valid_user&#39;]);    $result_dest = session_destroy();        do_html_header(&#39;Logging Out&#39;);        if(!empty($old_user))    {        if($result_dest)    //登出成功        {            echo &#39;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 /** * @author switch * @copyright 2015 * 修改数据库中用户密码的表单 */    //require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。    require_once(&#39;bookmark_fns.php&#39;);    session_start();    do_html_header(&#39;Changing password&#39;);        //创建变量    $old_passwd = $_POST[&#39;old_passwd&#39;];    $new_passwd = $_POST[&#39;new_passwd&#39;];    $new_passwd2 = $_POST[&#39;new_passwd2&#39;];        try    {        check_valid_user();        if(!filled_out($_POST))            throw new exception(&#39;You have not filled out the form completely.Please try again.&#39;);                if($new_passwd != $new_passwd2)            throw new exception(&#39;Passwords entered were not the same. Not changed.&#39;);                    if((strlen($new_passwd) > 16) || (strlen($new_passwd) getMessage();    }    display_user_menu();    do_html_footer();?>
登录后复制

5.6 forgot_paswd.php

<?php /** * @author switch * @copyright 2015 * 重新设置遗忘密码的脚本 */    //require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。    require_once(&#39;bookmark_fns.php&#39;);    do_html_header("Resetting password");        //创建变量    $username = $_POST[&#39;username&#39;];        try    {        $passwd = reset_password($username);        notify_password($username,$passwd);        echo &#39;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 /** * @author switch * @copyright 2015 * 添加书签的表单 */    //require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。    require_once(&#39;bookmark_fns.php&#39;);    session_start();        //创建变量    $new_url = $_POST[&#39;new_url&#39;];        do_html_header(&#39;Adding bookmarks&#39;);        try    {        check_valid_user(); //检查用户有效性        if(!filled_out($new_url))   //检查表单是否填写            throw new exception(&#39;Form not completely filled out.&#39;);        if(strstr($new_url,&#39;http://&#39;) === false)            $new_url = &#39;http://&#39;. $new_url;        if(!(@fopen($new_url,&#39;r&#39;))) //可以调用fopen()函数打开URL,如果能打开这个文件,则假定URL是有效的            throw new exception(&#39;Not a valid URL.&#39;);        add_bm($new_url);   //将URL添加到数据库中        echo &#39;Bookmark added.&#39;;        if($url_array = get_user_urls($_SESSION[&#39;valid_user&#39;]))            display_user_urls($url_array);    }    catch(exception $e)    {        echo $e ->getMessage();    }    display_user_menu();    do_html_footer();?>
登录后复制

6.2 delete_bms.php

<?php /** * @author switch * @copyright 2015 * 从用户的书签列表中删除选定书签的脚本呢 */    //require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。    require_once(&#39;bookmark_fns.php&#39;);    session_start();        //创建变量    $del_me = @$_POST[&#39;del_me&#39;];    $valid_user = $_SESSION[&#39;valid_user&#39;];        do_html_header(&#39;Deleting bookmarks&#39;);    check_valid_user();        if(!filled_out($del_me))    //    {        echo &#39;<p>You have not chosen any bookmarks to delete.<br>Please try again.';        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 /** * @author switch * @copyright 2015 * 基于用户以前的操作,推荐用户可能感兴趣的书签 */    //require_once语句和require语句完全相同,唯一区别是PHP会检查该文件是否已经被包含过,如果是则不会再次包含。    require_once(&#39;bookmark_fns.php&#39;);    session_start();    do_html_header(&#39;Recommending URLs&#39;);    try    {        check_valid_user();        $urls = recommend_urls($_SESSION[&#39;valid_user&#39;]);        display_recommended_urls($urls);    }    catch(exception $e)    {        echo $e ->getMessage();    }    display_user_menu();    do_html_footer();?>
登录后复制

7、源代码

下载地址



版权声明:本文为博主原创文章,未经博主允许不得转载。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1672
14
CakePHP 教程
1428
52
Laravel 教程
1332
25
PHP教程
1277
29
C# 教程
1257
24
PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

PHP:处理数据库和服务器端逻辑 PHP:处理数据库和服务器端逻辑 Apr 15, 2025 am 12:15 AM

PHP在数据库操作和服务器端逻辑处理中使用MySQLi和PDO扩展进行数据库交互,并通过会话管理等功能处理服务器端逻辑。1)使用MySQLi或PDO连接数据库,执行SQL查询。2)通过会话管理等功能处理HTTP请求和用户状态。3)使用事务确保数据库操作的原子性。4)防止SQL注入,使用异常处理和关闭连接来调试。5)通过索引和缓存优化性能,编写可读性高的代码并进行错误处理。

PHP的目的:构建动态网站 PHP的目的:构建动态网站 Apr 15, 2025 am 12:18 AM

PHP用于构建动态网站,其核心功能包括:1.生成动态内容,通过与数据库对接实时生成网页;2.处理用户交互和表单提交,验证输入并响应操作;3.管理会话和用户认证,提供个性化体验;4.优化性能和遵循最佳实践,提升网站效率和安全性。

HTML:结构,CSS:样式,JavaScript:行为 HTML:结构,CSS:样式,JavaScript:行为 Apr 18, 2025 am 12:09 AM

HTML、CSS和JavaScript在Web开发中的作用分别是:1.HTML定义网页结构,2.CSS控制网页样式,3.JavaScript添加动态行为。它们共同构建了现代网站的框架、美观和交互性。

在PHP和Python之间进行选择:指南 在PHP和Python之间进行选择:指南 Apr 18, 2025 am 12:24 AM

PHP适合网页开发和快速原型开发,Python适用于数据科学和机器学习。1.PHP用于动态网页开发,语法简单,适合快速开发。2.Python语法简洁,适用于多领域,库生态系统强大。

PHP和Python:深入了解他们的历史 PHP和Python:深入了解他们的历史 Apr 18, 2025 am 12:25 AM

PHP起源于1994年,由RasmusLerdorf开发,最初用于跟踪网站访问者,逐渐演变为服务器端脚本语言,广泛应用于网页开发。Python由GuidovanRossum于1980年代末开发,1991年首次发布,强调代码可读性和简洁性,适用于科学计算、数据分析等领域。

为什么要使用PHP?解释的优点和好处 为什么要使用PHP?解释的优点和好处 Apr 16, 2025 am 12:16 AM

PHP的核心优势包括易于学习、强大的web开发支持、丰富的库和框架、高性能和可扩展性、跨平台兼容性以及成本效益高。1)易于学习和使用,适合初学者;2)与web服务器集成好,支持多种数据库;3)拥有如Laravel等强大框架;4)通过优化可实现高性能;5)支持多种操作系统;6)开源,降低开发成本。

PHP的影响:网络开发及以后 PHP的影响:网络开发及以后 Apr 18, 2025 am 12:10 AM

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

See all articles