我们曾如此渴望命运的波澜,
到最后才发现,
人生最曼妙的风景,
竟是内心的淡定与从容。
我们曾如此期盼外界的认可,
到最后才知道,
世界是自己的,
与他人毫无关系。
————杨绛
这个公众号开通已经有很长一段时间了,还没发布过一篇推文,因为之前没有时间写,最主要是没有动力写,现在打算每周抽一点时间出来写写,每周至少(duo)一篇吧。第一篇推文就分享我寒假学PHP时写一个简单论坛小系统的经历吧,(文末有代码链接)
1.准备工作
最开始写的时候没有什么经验,都是想到什么就写上什么的。
简单论坛小系统采用PHP+AJAX来制作。
1.登陆(不登陆的浏览者只能浏览所有帖子、问题及回答)
权限级别(前者包含后者所有功能):0-管理员,1-会员,2-普通用户;
普通用户:可浏览所有帖子和问题、发帖、发问题、回帖、发答案;
会员:可删除自己发布的帖子和问题和修改密码;
管理员:可管理所有发布的帖子和问题,可对所有普通用户和会员进行管理;
2.注册
注册时只需设置用户名和密码
2.登陆
1.登陆页面
背景图片可定时切换
2.login.html
登陆验证成功后获取该用户的权限级别,然后根据权限级别再跳到相应页面,未登录不能直接访问其他文件,否则将跳转到登陆页面。
3.login.php
require_once "public/functions.php";
require_once "configure/config.php";
if (!isset($_POST["username"]) || !isset($_POST["password"])) {
exit();
}
session_start();
$username = $_POST["username"];
$password = encrypt($_POST["password"]);
if($_POST["vcode"] != $_SESSION["vcode"]) {
$data = [
"code" => -1,
"msg" => "验证码输入错误!"
];
} else {
$data = [
"code" => 0,
"msg" => ""
];
//链接数据库
$conn = new mysqli(DB_HOST,DB_USER,DB_PASSWORD,DB_DATABASE,DB_PORT);
mysqli_query($conn,'set names utf8');
if ($conn) {
$conn->query("set names utf8");
$sql = "SELECT * FROM member WHERE username='{$username}'";
$query = $conn->query($sql);
$result = $query ? mysqli_fetch_assoc($query) : $query;
if (!$result) {
$data["code"] = -1;
$data["msg"] = "用户不存在,请注册!";
} else {
if ($password != $result["password"]) {
$data["code"] = -1;
$data["msg"] = "密码错误!";
} else {
//登录成功
$_SESSION["id"] = $result["id"];//用户id
$_SESSION["username"] = $result["username"];//用户名
$_SESSION["permissions"] = $result["permissions"];//权限级别.0-管理员,1-会员,2-用户,浏览者无
$data["data"] = $_SESSION;
foreach ($_SESSION as $k => $v) {
setcookie($k, $v);
}
}
}
$conn->close();
} else {
$data["code"] = -1;
$data["msg"] = "连接数据库失败!";
}
}
echo json_encode($data, JSON_UNESCAPED_UNICODE);
3.注册
1.注册页面
2.register.php
先查询用户名有没有被占用,如果没有就可以使用该用户名进行注册
4.主页
1.主页页面
在做到处理数据前端显示的时候,发现中文都显示成问号了,后来百度查了一下,加上mysqli_query($conn,'set names utf8');中文就可以正常显示了。
(图一)
(图二)
图一和图二通过JS使他们在同一时刻只能显示其中之一,而另一个隐藏。
5.发帖、提问
1.发帖、提问
发帖、提问和最新帖列表是用JS实现的tab选项卡切换,主页有简单的响应式效果。
6.后台管理页面
1.后台管理页面
7.验证码
1.在登陆和注册那里加上了验证码验证,验证码的作用是为防止用户利用机器人程序自动注册、登录、灌水。
8.退出
1.点击退出之后身份将变成浏览者,只有浏览权限
9.数据库
1.数据库中的表用于存放成员信息、问题和答案、帖子和回复。
10.最后
1.所有文件
最后写下来,自己能学到很多,收获很多,当然这个简单论坛小系统也有很多不足的地方,比如搜索功能、新闻资讯、建议箱还有回收站等这些功能还未实现,还有代码不简洁、逻辑也有些问题,学习之路还很长,现在我也在补全这个小系统的一些功能,以及试着优化代码。
最后的最后,欢迎同我一样刚接触PHP或者对它感兴趣的你能跟我一起学习、交流还有分享经验。
代码我已经放到coding上去了,地址:https://coding.net/u/lunker/p/BBS/git?public=true
END
领取专属 10元无门槛券
私享最新 技术干货