第一“道菜”

我们曾如此渴望命运的波澜,

到最后才发现,

人生最曼妙的风景,

竟是内心的淡定与从容。

我们曾如此期盼外界的认可,

到最后才知道,

世界是自己的,

与他人毫无关系。

————杨绛

这个公众号开通已经有很长一段时间了,还没发布过一篇推文,因为之前没有时间写,最主要是没有动力写,现在打算每周抽一点时间出来写写,每周至少(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

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180505G05DJS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券