搜索

查看: 3126|回复: 11

[PHP] SQL+HTML+PHP 一个简单论坛网站的综合开发案例(注册、登录、注销、修改信息、留言等)

[复制链接]
发表于 2023-5-4 17:02:50 | 显示全部楼层 |阅读模式
Editor 2023-5-4 17:02:50 3126 11 看全部
1 实验环境
(1)服务端:本实验基于虚拟机win2008系统的WAMP环境进行,该环境相关配置过程参考文章《【语言环境】WAMP环境部署及优化—以win2008R2SP1为操作系统》。
(2)客户端:使用浏览器访问与控制。
(3)服务端与客户端处于同一个局域网下,开启服务端的phpstudy并确保能从客户端浏览器访问。
2 网站页面功能规划
写一个网站,在首页能看用户的留言,同时能实现包括用户注册、登录、注销、上传头像、修改个性签名等。其中网站的所有代码文件均放在默认站点位置下的文件夹jrltbbs中。
2.1 论坛首页
论坛首页文件为index.php,并具有如下功能
显示论坛标题;根据用户是否登录分支显示:已登录则显示“欢迎来到论坛首页”字样,同时显示个人中心、注销、新增留言等按钮;未登录则显示注册和登录按钮,未登录仅能看留言。网页主体用于显示留言(后续实验完善留言功能) 2.2 个人中心
个人中心相关的代码文件均放入个人中心文件夹为member中 ,个人中心相关的代码文件包含:
(1)个人中心的首页https://www.jb51.net/article/member/index.php。具有如下功能:
个人中心页面标题显示个人中心;根据用户是否登录分支显示:已登录则显示欢迎“欢迎来到个人中心”字样、显示个人账号、头像及个性签名信息、同时显示信息修改和注销按钮;未登录则显示注册和登录按钮。
(2)注册页面https://www.jb51.net/article/member/register.php。用于实现注册功能,具体功能如下:
设置表单用于首次收集用户信息(包括输入的账号及两次输入的密码),设置提交按钮用于提交表单数据。后台完成账号密码的验证:①账号或密码为空,则返回注册页面“提示账号密码不能为空,请重新输入”;②若两次密码不一致,则返回注册页面并提示“两次密码输入不一致”;③若账号已在数据库中存在,则返回注册页面并提示“账号已存在,请重新注册”;④账号密码没问题则存入数据库中,并返回COOKIE。
(3)接收来自注册页面的表单数据并完成账号密码验证./member/addUser.php 。具体功能如下:
接收来自注册页面的表单数据完成账号密码的验证,没问题后将表单数据写入数据库
①账号或密码为空,则返回注册页面“提示账号密码不能为空,请重新输入”;
② 若两次密码不一致,则返回注册页面并提示“两次密码输入不一致”;
③若账号已在数据库中存在,则返回注册页面并提示“账号已存在,请重新注册”;
④账号密码没问题则存入数据库中,并返回COOKIE。
(5)登录页面https://www.jb51.net/article/member/login.php。用于用户登录,具体功能如下:
设置表单用于收集用户输入账号及密码,设置提交按钮用于提交表单数据。后台完成账号密码与数据库数据验证,账号密码正确则返回COOKIE、显示欢迎字样、并提供返回首页与个人中心按钮;账号密码错误则重定向到登录页面重新输入。暂时不考虑设置验证码的功能。
(6)注销页面https://www.jb51.net/article/member/logout.php。用于用户注销,具体功能如下:
删除COOKIE;并根据是否注销成功分支显示:成功则提示成功并显示返回首页按钮,失败则显示注销失败。
(7)头像上传及更新页面./member/updatePhoto.php。主要用于更新头像。
头像修改页面,显示按钮让用户选择新头像,修改成功后页面显示修改成功,提供返回个人中心和返回首页等按钮。
(8)生成验证码页面./member/vcode.php。用于生成随机字符串的验证码。
2.3 实现留言功能
(1)显示留言内容页面./showmessage.php
读者点击网站首页留言标题时,跳转到此页面,用于展示该留言内容。
(2) 新增留言页面https://www.jb51.net/article/addMessage.php。用于已登录的用户新增留言。
2.4 数据库及连接数据库
(1)数据库名称为jrlt,数据库中新建两个数据表,分别为:
users表:保存用户注册与修改的数据。该表共有5个字段,分别是id、name、password、photo、money。messages表:保存首页用户留言数据。该表共有4个字段,分别是id、uname、title、content。
(2) 与mysql数据库建立连接./inc/dblink.inc.php。具体功能如下:
用于实现PHP与mysql数据库建立连接,当其他PHP脚本需要与mysql数据库建立连接时,使用include引入。 3 实验阶段一:实现注册、登录、注销和更新头像等功能 3.1 数据库
数据库的创建以及与PHP之间的连接可具体参考《【PHP基础-10】实现PHP与SQL数据库之间的交互》,在本综合案例中,创建数据库及其相应的数据表步骤如下:
(1)先在数据库中创建一个jrlt的数据库。

2022122715304788.png

2022122715304788.png

(2)在该数据库下创建两个表,一个是users,一个是messages,所含字段分别如下:

2022122715304789.png

2022122715304789.png


2022122715304790.png

2022122715304790.png


3.2 论坛首页https://www.jb51.net/article/index.php
首页位于默认站点位置下的位置为\PHP\jrltbbs\index.php。
代码如下。

   
      首页----今日论坛


    今日论坛BBS
   
   
    留言板


3.3 个人中心注册页面https://www.jb51.net/article/member/register.php
设置表单用于收集用户输入的账号及两次输入的密码,设置提交按钮用于提交表单数据。
代码如下:

   
      注册----今日论坛


    今日论坛BBS
   
        用户名:
        密码:
        确认密码:
        
   
   


3.4 接收来自注册页面的表单数据./member/addUser.php
接收来自注册页面的表单数据,并完成账号密码的验证:①账号或密码为空,则返回注册页面“提示账号密码不能为空,请重新输入”;②若两次密码不一致,则返回注册页面并提示“两次密码输入不一致”;③若账号已在数据库中存在,则返回注册页面并提示“账号已存在,请重新注册”;④账号密码没问题则存入数据库中,并返回COOKIE。
代码:


";
                    }
                }else{
                    echo "两次密码输入不一致,请重新注册";
                }
            }else{
                echo "用户名已存在,请重新注册";
            }
        }
        $results1=mysqli_query($link,$sql1);
    }else{
        echo "账号或密码不能为空, 请重新注册";
    }
}else{
    header("Location:https://www.jb51.net/article/register.php");
}
//var_dump((bool)($userName));
//var_dump((bool)($userPass1));
//var_dump((bool)($userPass2));
?>

tips:
注意:isset() 函数用于检测变量是否已设置并且非 NULL,如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是 null 字符(“\0”)并不等同于 PHP 的 NULL 常量。
3.5 与mysql数据库建立连接./inc/dblink.inc.php
为其他需要连接数据库的网页提供连接,避免重复定义。

3.6 个人中心的首页https://www.jb51.net/article/member/index.php
利用COOKIE信息中的name值是否存在来判断是否已登录,如果未登录,则需要先登录;如果已经登录,可以利用COOKIE信息中的name字段,将用户输入的信息与数据库中的信息进行对比,只有数据库中已有的用户才能登录。
代码如下


   
    今日论坛--个人中心

    今日论坛--个人中心
    0){
                $result=mysqli_fetch_assoc($results);
                echo "";
                echo "欢迎来到您的个人中心,".$_COOKIE['name'] ."! 返回首页[/url] ";
                echo "注销
";
                echo "";
                echo "个人信息";
                echo "帐号名:".$_COOKIE['name'] ."
";
                echo "您的头像是
[img]https://www.jb51.net/article/".$result[[/img]
";
                echo "修改头像
";
                echo "帐户余额:https://www.jb51.net/article/".$result['money']." 请联系管理员";
            }else{
                die("该用户不存在");
            }
        }else{
            die("sql语句有误");
        }
    }else{
        echo "请登录";
    }
    ?>



3.7 登录页面 https://www.jb51.net/article/member/login.php
当$_POST['userSubmit']具有数据时,则判断将用户输入的信息与数据库信息进行对比,正确则可以成功登录;若$_POST['userSubmit']无数据时,则设置表单用于收集用户输入账号及密码,设置登录按钮用于提交表单数据(表单数据提交到当前页面)。
setcookie设置路径:设置成 ‘/’ 时,为网站默认路径,Cookie 对整个域名 domain 有效。 如果设置成 ‘/PHP/’, Cookie 仅仅对 domain 中 /PHP/ 目录及其子目录有效。 设置 Cookie 时的默认值为代码文件所在的当前目录。因此,为了让网站首页也能获取到cookie,需要设置路径为/PHP/jrltbbs。
代码:


   
      登录----今日论坛


    今日论坛BBS
    0){
                    setcookie('name',$userName,time()+3600*24, "/PHP/jrltbbs");
                    //注意cookie的路径,不同路径的cookie认为是两条cookie
                    echo "登录成功,返回首页个人中心";
                }else{
                    echo "用户名或密码错误,请重新登录";
                }
            }else{
                die("sql语句有误");
            }
        }else{
            echo "验证码错误,请重新登录";
        }
    }else{
        $html=
        用户名:
        密码:
        验证码:
        
        
   
HTML;
        echo $html;
    }
    ?>
   



3.8 注销页面https://www.jb51.net/article/member/logout.php
使COOKIE过期;
代码:


3.9 更新头像./member/updatePhoto.php
用于上传或更新头像。
代码:


   
   
   
HTML;
    echo "$html";
}
?>

3.10 生成验证码./member/vcode.php
用于简单生成随机的字符串验证码。
$str";
?>
3.11 测试
(1)访问今日论坛首页,显示结果为:

2022122715304791.png

2022122715304791.png


(2)点击注册,输入账号1,不输入密码。

2022122715304792.png

2022122715304792.png

(3)点击注册时,页面显示如下,提示”账号或密码不能为空, 请重新注册“。

2022122715304793.png

2022122715304793.png

(4)点击重新注册,然后输入账号1,密码2,点击注册,弹出以下提示

2022122715304794.png

2022122715304794.png

(5)点击重新注册,然后输入账号a,密码1,确认密码输入2,点击注册,弹出以下提示

2022122715304795.png

2022122715304795.png

(6)点击重新注册,然后输入账号a,密码1,确认密码输入1,点击注册,弹出以下提示

2022122715304796.png

2022122715304796.png


(7)点击登录,输入账号a,密码1,并输入验证码(验证码输入不一致),尝试下会出现什么结果,点击登录,出现以下提示。

2022122715304797.png

2022122715304797.png


2022122715304798.png

2022122715304798.png

(8)点击”请重新登录“,输入账号a,密码1,并输入验证码,点击登录,

2022122715304799.png

2022122715304799.png


(8)显示登录成功,返回首页与个人中心。网页获取到服务端发来的COOKIE,返回首页与个人中心均可用。

20221227153047100.png

20221227153047100.png


(9)当点击返回首页时的页面结果如下。

20221227153047101.png

20221227153047101.png


(10)当点击返回个人中心时,页面结果如下。

20221227153047102.png

20221227153047102.png

(11)点击修改头像,选择自己的图片文件,并点击提交。

20221227153048103.png

20221227153048103.png

(12)图像上传成功,点击返回个人中心。

20221227153048104.png

20221227153048104.png

(13)返回个人中心后可以看到自己上传的头像。

20221227153048105.png

20221227153048105.png

(14)点击注销即可退出登录,系统将删除COOKIE。

20221227153048106.png

20221227153048106.png

(15)点击返回首页,可以重新回到首页

20221227153048107.png

20221227153048107.png


4 实验阶段二:完善留言板功能 4.1 https://www.jb51.net/article/index.php 首页功能完善
让原本的首页增加留言相关功能,包括显示留言及新增留言。
代码:


   
      首页----今日论坛


    今日论坛BBS
   
   
    留言板
    0){
            echo "";
            echo "IDAUTHORTITLE";
            while($result=mysqli_fetch_assoc($results)){
                echo "{$result['id']}{$result['uname']}
                [url=https://www.jb51.net/article/showmessage.php?id={$result[]{$result['title']}[/url]";
            }
            echo "";
        }else{
            echo "暂无留言内容";
        }
    }else{
        echo mysqli_error($link);
    }
    ?>



4.2 显示留言内容页面./showmessage.php
用读者点击首页留言标题时,跳转到此页面,用于展示该留言内容。
代码:



留言论坛

留言内容[url='https://www.jb51.net/article/index.php'>返回首页";
        echo $result['content'];
    }else{
        echo mysqli_error($link);
    }
}else{
    echo "id error";
}
?>


4.3 新增留言页面https://www.jb51.net/article/addMessage.php
作用:用于已登录的用户新增留言。
代码:


留言论坛

    标题:
    留言内容:
   
   
   
HTML;
    echo $html."
";
    if(isset($_POST['userSubmit']) && isset($_POST['userTitle'])){
        $userName=$_COOKIE['name'];
        $title=mysqli_real_escape_string($link,$_POST['userTitle']) ;//将提交的文本进行转义
        $content=mysqli_real_escape_string($link,$_POST['userContent']);
        $sql="INSERT INTO `messages`( `uname`, `title`, `content`) VALUES
        ('".$userName."','".$title."','".$content."')";
        if($results=mysqli_query($link,$sql)){
            echo "留言成功,返回首页[/url]";
        }else{
            echo mysqli_error($link);
        }
    }else{
        echo "请提交";
    }
}else{
    echo "您还未登录,请登录";
}
?>


4.4 测试
(1)浏览器打开网站首页,首页内容如下:

20221227153048108.png

20221227153048108.png

(2)点击”我要留言“,弹出如下提示

20221227153048109.png

20221227153048109.png

(3)点击请登录,输入账号a,密码1,并输入验证码,点击提交。

20221227153048110.png

20221227153048110.png


(4)登录后点击返回首页,并点击“我要留言”。此时可以输入留言。

20221227153048111.png

20221227153048111.png


20221227153048112.png

20221227153048112.png


(5)输入自己的留言并点击提交。

20221227153048113.png

20221227153048113.png


(6)可以看到留言成功,点击返回首页。

20221227153048114.png

20221227153048114.png


(7)在首页可以看到刚刚新增的留言列表。

20221227153048115.png

20221227153048115.png

(8)点击刚刚新增的这个留言标题,查看留言内容。

20221227153048116.png

20221227153048116.png


到此这篇关于SQL+HTML+PHP 一个简单论坛网站的综合开发案例(注册、登录、注销、修改信息、留言等)的文章就介绍到这了,更多相关论坛网站的综合开发案例内容请搜索知鸟论坛以前的文章或继续浏览下面的相关文章希望大家以后多多支持知鸟论坛
回复

使用道具 举报

发表于 2023-6-29 02:57:19 | 显示全部楼层
落败的青春阳落s 2023-6-29 02:57:19 看全部
感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
回复

使用道具 举报

发表于 2023-6-29 17:42:40 | 显示全部楼层
知足常乐77 2023-6-29 17:42:40 看全部
这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-6-29 19:30:28 | 显示全部楼层
素色流年783 2023-6-29 19:30:28 看全部
楼主,大恩不言谢了!知鸟论坛是最棒的!
回复

使用道具 举报

发表于 2023-6-30 09:43:34 | 显示全部楼层
幸福341 2023-6-30 09:43:34 看全部
楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-6-30 19:17:23 | 显示全部楼层
123456865 2023-6-30 19:17:23 看全部
感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
回复

使用道具 举报

发表于 2023-6-30 21:21:55 | 显示全部楼层
心随674 2023-6-30 21:21:55 看全部
其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
回复

使用道具 举报

发表于 2023-7-3 15:17:09 | 显示全部楼层
执着等待等wc 2023-7-3 15:17:09 看全部
楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-7-4 15:04:37 | 显示全部楼层
123456825 2023-7-4 15:04:37 看全部
既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
回复

使用道具 举报

发表于 2023-7-6 18:31:08 | 显示全部楼层
无人岛屿颈 2023-7-6 18:31:08 看全部
这个帖子不回对不起自己!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

  • 您可能感兴趣
点击右侧快捷回复 【请勿灌水】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

RSS订阅| SiteMap| 小黑屋| 知鸟论坛
联系邮箱E-mail:zniao@foxmail.com
快速回复 返回顶部 返回列表