第十五章:第1节论坛系统(BBS)定义一个所有控制器类的公共父类

更新于:2018-10-19 14:57:32

从本章开始,我们开始做论坛系统项目:


1)


首先在Common模块下定义一个所有控制器的公共父类,写这个控制器类的作用:为了定义几个在所有控制器中都有可能用到的公共方法。


这个公共父类所有的方法都是“protected”,楠神会陆续往这个控制器添加一些常用的公共方法。


1.png


目前写了两个方法:“_ej”和“_sj”,对错误跳转与成功跳转重新做了包装。


1.png


在config.php文件中对跳转模板做了修改。


2)


楠神写项目时,都是从后台模块先写起的。而且在写项目前,都会把需求讨论好,设计出主要的数据表。这次我就不这样做了,也不会有特复杂的需求,咱们写到哪,用什么表再设计什么表。


在admin模块下建一个admin模块的公共父类,让它去继承AllCommon总父类


1.png


我们都知道,后台必须登录后才可以查看,所以在Common公共父类的初始方法中,做下session判断。


备注:后面楠神会把管理员信息存入$_SESSION['admin'];会员信息存入$_SESSION['user']。



1.png


输入网址https://www.phpnanshen.com/admin


备注:直接输入admin,TP框架会默认找Index控制器的index方法


1.png


访问到的是Common公共父类初始化方法中引入的404错误页面,session判断生效了。把Common公共父类中初始化方法注释掉:


1.png


1.png

这样就能访问到了Index控制器的index方法了。


大家可以看出楠神定义一个公共父类的好处了吧,不然以后admin模块下控制器多了,我们岂不是每个控制器方法中都得写一个初始化方法,那就造成大量重复代码。


3)


设计两张数据表,一个管理员表,一个管理员登录日志表(登录日志很重要,可查看一个网站的管理员账号是否被盗,是否被人恶意登录。尤其对安全性要求高的网站,就要做各种日志记录)。


1.png


说明:


管理员表:

“status”冻结状态,这是一种安全功能,当用户输错密码次数过多,自动冻结。

“pass”是密文密码,“word”是明文密码

“group_id”是管理员所属哪个权限组


登录日志表:

管理员登录日志表log写前面,主要是一个网站日志表特别多,log写前面可以统一为日志表做个前缀。

“ip_info”ip地址信息。

“sess_id”这个字段可用于实现一个账号不能同时在两个浏览器登录的功能。


把这两张表写入数据库后,在common模块model目录分别建一个模型文件(前提最好先建一个公共的模型类)


1.png

1.png


1.png


像管理员表和登录日志表都是不需要删除数据的,所以把模型对象的delete删除方法重写禁用掉。


4)


在admin模块建一个Login控制器


1.png

说明:


g_j是自定义的跳转函数


大家注意下在Login控制器中有初始化方法。如果Login控制器不重写初始化方法,它会继承Common公共控制器的初始化方法。Common控制器中初始方法必须session不为空才可以访问其他方法,而Login控制器中初始方法必须session为空才可以访问其他方法。


1.png


大家先去看看楠神的代码,我也是边写代码边写教程,代码中如果有错误,我发现后都会改正的。


下节继续讲解。


本节学习代码》》》