第十一章:第13节 PHP与MySQL——PHP实现会员管理(七)用cookie实现管理权限

更新于:2017-10-12 20:46:42

我们用cookie实现管理权限的功能,开始继续第11节的代码:


1.png


在admin控制器类的login方法(21——23行代码):登录成功后把登录成功的状态值写入浏览器,并跳转到首页。


1.png


入口文件中第23行做管理员权限认证。注:strtolower函数作用把字符串转为小写字符串。


演示:


当直接输入www.phpnanshen.com时,验证登录状态不成功,会跳转到登录页:


1.png

输入用户名和密码,自动跳转到www.phpnanshen.com,一个简单的“管理权限验证功能”就做完了。


1.png


加一个退出的功能:


1.png

1.png

1.png


这个退出功能大家可本地演示(楠神本地是成功的)。


楠神为什么说这是一个简单的“管理权限验证功能”?


因为实际项目中是不会采取这样的方式做权限验证的。一点不安全,这么重要的信息不应该来回地在网络中传输,尤其在http下很容易被截获和伪造,它应该存到服务端。


还有这样的情况:


我们的会员系统是很简单的,假如比较复杂的会员系统,会员有各种信息。当会员登录时,从数据库读数据,我们不应该只做密码验证,还要把会员其他一块读出来的信息数据先缓存到一个地方。这些数据可能会在用户接下来的操作中频繁遇到,放到缓存中可避免多次重复读数据库。


如果这些信息数据存入cookie中,除了不安全之外,还会额外增加宽带开销。


楠神见过有人这样开发,把会员所有的信息使用一套加密的算法(可逆的算法)加密后存入cookie,如果是被别人截获了,不知道破解方法就不知道内容是什么。虽然是起到了保护作用,但它那个cookie值变得很长。我们是不推荐这样写的。


通常把重要的数据要缓存在服务端。假如以文件缓存的方式,一个会员登录成功,把它的信息数据临时存入服务器一文件中,然后把文件的名字以cookie的形式存入用户浏览器。用户每次访问页面,服务器通过这个cookie找到指定文件即可快速读取会员数据。这种方式不仅可减少宽带开销,还能起到一定安全作用。


有朋友看到这会不会思考到:“实现这样的功能得写很多代码吧!要保证文件名不重复,保证过期文件自动删除……”


其实不用的,我们只要使用PHP的session,就可自动完成以上功能。下节开始讲解session。


本节学习代码》》》