第8节的代码演示了超级管理员对任意管理员的增删查改操作,假如当前登录的管理员不是超级管理员,管理员虽然不能执行增加、删除新管理员操作,但需要有修改自己资料的权限。
这节演示的代码:修改自己资料的功能。
普通管理员修改资料操作界面:
普通管理员不能修改自己的用户名、管理组和状态。
控制器方法代码:
模型方法:
特别说明:
在写这个功能时,一定要注意更新条件ID的获取:
1)只有当前是超级管理员时,才可以从前端接收传递过来的条件ID号。
2)如果当前管理员不是超级管理员,它只能修改自己,也就是条件ID号必须是自己的ID号。那这个地方就不能从前台(get或post)获取,而是从session中获取。
从前台获取就会出现安全问题,很容易被篡改。比如:
A管理员ID为1,B管理员ID为2,A并没有权限修改B。因为更新条件ID号从前端获取,如果A用户恶意修改了提交的ID参数为2,那A用户就能把B用户的密码等所有信息修改掉。
楠神看过很多人写的代码,经常会犯这样的致命错误。
顺便再说下,不光是更新还有插入新数据时,大家写的代码最好要对提交的参数做好验证与处理。有些人喜欢搞破坏,添加新数据时,他会恶意提交一个超大值的ID参数。如果后台直接是把“$_POST”当成“$data”,没有对提交的参数做任何验证与处理就入库,其结果会造成ID数不连续、字段值溢出等问题。
这节代码还顺便写了“个人登录日志”、“个人操作日志”两个功能,代码和前一节差不多,就不详细介绍了。