从本章开始,我们开始做论坛系统项目:
1)
首先在Common模块下定义一个所有控制器的公共父类,写这个控制器类的作用:为了定义几个在所有控制器中都有可能用到的公共方法。
这个公共父类所有的方法都是“protected”,楠神会陆续往这个控制器添加一些常用的公共方法。
目前写了两个方法:“_ej”和“_sj”,对错误跳转与成功跳转重新做了包装。
在config.php文件中对跳转模板做了修改。
2)
楠神写项目时,都是从后台模块先写起的。而且在写项目前,都会把需求讨论好,设计出主要的数据表。这次我就不这样做了,也不会有特复杂的需求,咱们写到哪,用什么表再设计什么表。
在admin模块下建一个admin模块的公共父类,让它去继承AllCommon总父类
我们都知道,后台必须登录后才可以查看,所以在Common公共父类的初始方法中,做下session判断。
备注:后面楠神会把管理员信息存入$_SESSION['admin'];会员信息存入$_SESSION['user']。
输入网址https://www.phpnanshen.com/admin
备注:直接输入admin,TP框架会默认找Index控制器的index方法
访问到的是Common公共父类初始化方法中引入的404错误页面,session判断生效了。把Common公共父类中初始化方法注释掉:
这样就能访问到了Index控制器的index方法了。
大家可以看出楠神定义一个公共父类的好处了吧,不然以后admin模块下控制器多了,我们岂不是每个控制器方法中都得写一个初始化方法,那就造成大量重复代码。
3)
设计两张数据表,一个管理员表,一个管理员登录日志表(登录日志很重要,可查看一个网站的管理员账号是否被盗,是否被人恶意登录。尤其对安全性要求高的网站,就要做各种日志记录)。
说明:
管理员表:
“status”冻结状态,这是一种安全功能,当用户输错密码次数过多,自动冻结。
“pass”是密文密码,“word”是明文密码
“group_id”是管理员所属哪个权限组
登录日志表:
管理员登录日志表log写前面,主要是一个网站日志表特别多,log写前面可以统一为日志表做个前缀。
“ip_info”ip地址信息。
“sess_id”这个字段可用于实现一个账号不能同时在两个浏览器登录的功能。
把这两张表写入数据库后,在common模块model目录分别建一个模型文件(前提最好先建一个公共的模型类)
像管理员表和登录日志表都是不需要删除数据的,所以把模型对象的delete删除方法重写禁用掉。
4)
在admin模块建一个Login控制器
说明:
g_j是自定义的跳转函数
大家注意下在Login控制器中有初始化方法。如果Login控制器不重写初始化方法,它会继承Common公共控制器的初始化方法。Common控制器中初始方法必须session不为空才可以访问其他方法,而Login控制器中初始方法必须session为空才可以访问其他方法。
大家先去看看楠神的代码,我也是边写代码边写教程,代码中如果有错误,我发现后都会改正的。
下节继续讲解。