第十一章:第14节 PHP与MySQL——PHP实现会员管理(八)会话机制SESSION

更新于:2017-10-13 20:42:22

基本原理

会话数据 存储于浏览器端安全性较低。如果cookie数据量较大,由于每次请求都要携带,增加带宽使用。

 

使用session技术来实现:


将会话数据存储于服务器端!可增加安全,减少宽带开销。

 

为每个会话数据建立独立的会话数据区(就像上节说的为每个浏览器用户新建一文件),每个会话数据区有唯一的标志(比如说文件名),同时浏览器端存储该唯一标志(比如把文件名做cookie数据),做配对使用!


1.png

基本操作

1.png


别看有关session的函数这么多,其实只要session_start()和$_SESSION,一个函数一个预定义变量就可以实现session的功能了。


直接演示用session实现会员系统管理权限的功能:


1.png


1)在入口文件开启session功能,使用session_start()函数。


1.png


2)把21行注释掉,22行把有关数据赋值给$_SESSION,这样就能存入session里了(从其他页面可以获取),比cookie操作要简单。至于数据存哪?怎么存?都不用去管了,PHP的session功能自己会完成。


1.png


3)再修改入口文件,注释掉23行,改成24行。


1.png


4)退出功能,用unset可以把session删除。


开始看下效果:


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


1.png


用浏览器的开发者工具(F12)可看到在“请求cookie”里有一个名叫“PHPSESSID”的cookie。看名字也知道什么意思:“PHPsession的id号”,这个cookie里记录的就是“可以在服务器中找到当前会话的session数据的id号”。虽然我们还没有登录成功往session里写数据,可在入口文件session_start函数执行的那一刻,服务器就已为当前用户创建了空的session,只等我们往里面添加数据了。


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


1.png


点击“管理员退出”,依然不会有问题,大家可自行去测试下。


为了验证session真的可以在不同的页面(URL)中获取到一样的数据:


1.png


1.png


1.png



session里的数据真的可以在不同的页面(URL)实现“穿梭”。那session里的数据到底存在哪了?


PHPsession在默认的情况下是存在文件里。


1.png


这是楠神本地PHP产生的各种session文件。


打开其中一个session文件:

1.png


以序列化的形式存储数据。


本节先讲到这,下节继续探讨有关session更深的话题。


本节学习代码》》》