第十一章:第11节 PHP与MySQL——PHP实现会员管理(五)会话机制COOKIE

更新于:2017-10-12 11:08:27

会员管理系统开发完了,有没有发现一个重要的问题——缺少验证管理人是否有管理权限的功能。现在是任何人都可以对会员系统增删查改,那这样的会员管理系统有什么意义,起码得是通过了用户名、密码验证的人才有管理权限吧。


写一个管理员登录的功能:


在mysql里建一个管理员表


1.png


楠神只准备写管理员登录功能,暂不写注册或添加功能,所以我们明文保存密码吧。


1.png



1.png

写了一个管理员控制器类


再改下入口文件index.php的代码:


1.png


看下登录演示:


1.png

提交后:


1.png


管理员登录功能完成了。


关键的地方:


真正的问题来了,思考下:

 1.登录成功后,程序把这个登录成功的“状态值”存到哪?

 2.同一用户再次访问本网站页面时(可以是不同的页面),如何快速获取到“状态值”?


只凭目前所学的PHP知识,很难解决这两个问题。要解决这两个问题,必须得依靠COOKIE


了解cookie:


用浏览器的开发者工具(F12),随便点击一个页面请求:


1.png


会有一个“Cookies”项,里面有请求的cookie值和响应的cookie值。


cookie是浏览器的技术,允许服务器端脚本在浏览器端存储数据的一种技术。


其特点

允许服务器向浏览器发送指令,用来管理存储在浏览器端的cookie数据。

浏览器如果存储了某台服务器所设置的cookie数据,浏览器向服务器请求时,会携带存储的cookie数据到服务器端。


1.png

说明下:一个用户访问一个网站的两个页面(等于向一服务器发送了两个TCP连接,也可以理解为http连接,这两次连接没有对应关系的),如果没有cookie值的存在,服务器根本不知道两次的访问来自同一个人。有了cookie的帮助,服务器可以通过cookie值判断这两次访问是有关联的,第一次连接产生的数据以cookie数据形式存入浏览器,第二次连接时可由浏览器传入服务器继续使用。有了cookie技术,浏览器和服务器之间等于建立起了“多次交流”的会话。


通过对cookie的了解,我们可以用cookie解决上面的两个问题:


1)可以把登录成功的状态值作为cookie数据存到浏览器端(现实开发中,不是这样的,后面我们还要学习会话机制的另一知识session)。

2)当再访问同一域名下其他页面时,浏览器会把cookie数据(状态值)一并发给服务器。


cookie与get、post提交数据的区别:


相同处:它们三个都可以向服务器端提交数据。


不同处:


1)get和post向服务器提交用户主动输入的数据,而cookie数据是服务器存在浏览器端主要用来完成会话或者一些其他验证判断,所以cookie值各大浏览器不支持不让用户去修改(甚至不让用户轻易看到,虽然是这样,cookie数据并不能确保是安全的)。


2)浏览器向服务器post数据,需要用表单提交;浏览器向服务器get数据,既可以用表单,也可把数据放入URL中;浏览器向服务器传送cookie数据,只要本地浏览器有某一域名下的cookie值,浏览器都会自动传送。


3)在安全方面,get方式最差,数据直接用肉眼可以看到。post和cookie,相对安全,用肉眼看不到。但也不是绝对的安全,在http协议下毕竟都是明文传输,容易被抓包。cookie在https协议下会被加密。


cookie先简单了解这些,下节讲解PHP对cookie的基本操作。


本节学习代码》》》