Session的工作方式


Posted in PHP onOctober 09, 2006

下面我们来看一下Session是如何工作的。不知你是否知道通过Cookie来实现身份认证的吧。首先生成一个独一无二的Cookie作为用户身份的标志,并在数据库中进行注册。然后通过用户传递来的Cookie和数据库中注册的Cookie进行对照以确定用户的身份。
  Session的工作原理也是这样。
  首先,PHP为建立Session的用户产生一个独一无二的字符串,用来标志这个用户的session。一般将这个字符串称作Session Id。然后“sess”+Session Id为文件名(例如一个Session ID为111,那么文件名为sess_111)在服务器的文件系统中建立一个文件,在文件中保存用户在Session所定义的全局变量的变量名和值。然后再将Session Id作为一个名为PHPSession的Cookie保存在用户端的文件系统中。
  然后,当用户再次连接服务器访问一个PHP脚本时,PHP从用户发来的PEESession这个Cookie中得到用户所在Session的Session Id,并根据Session Id从服务器的文件系统中保存Session信息的文件。最后从这个文件中读出用户在上次连接时所设置的全局变量的值。
  因此,我们可以看到Session的工作原理和我们上一节所介绍的身份认证的工作原理是一样的。所不同的只是Session将信息保存在了服务器的文件系统中,而我们将信息保存在了数据库中。当然使用Session好处就是数据的保存和获取是由PHP自动完成的,而直接使用Cookie的话就需要自己动手进行数据的保存和获取。
  Session利用Cookie的身份标志功能,将用户在浏览网站时需要保存的信息保存在服务器上。这样Session既克服了HTTP协议的缺陷,又防止了信息的泄漏,而且方便了编程者的使用,是一个非常好的解决方案。不过,Session的功能只有PHP4支持,PHP3是不支持Session的。因此使用PHP3进行网站构建的读者只能采用直接使用Cookie的方式。

PHP 相关文章推荐
PHP 编写大型网站问题集
May 07 PHP
php park、unpark、ord 函数使用方法(二进制流接口应用实例)
Oct 19 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
Jul 18 PHP
用php解析html的实现代码
Aug 08 PHP
php+iframe实现隐藏无刷新上传文件
Feb 10 PHP
php写入、删除与复制文件的方法
Jun 20 PHP
Symfony2安装的方法(2种方法)
Feb 04 PHP
PHP批量去除BOM头内容信息代码
Mar 11 PHP
Symfony2学习笔记之插件格式分析
Mar 17 PHP
php源码之将图片转化为data/base64数据流实例详解
Nov 27 PHP
php常用字符函数实例小结
Dec 29 PHP
php创建图像具体步骤
Mar 13 PHP
用Flash图形化数据(一)
Oct 09 #PHP
PHP中Session的概念
Oct 09 #PHP
虚拟主机中对PHP的特殊设置
Oct 09 #PHP
用Flash图形化数据(二)
Oct 09 #PHP
用php来检测proxy
Oct 09 #PHP
如何将一个表单同时提交到两个地方处理
Oct 09 #PHP
PHP制作图型计数器的例子
Oct 09 #PHP
You might like
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
php检查字符串中是否有外链的方法
2015/07/29 PHP
音乐播放用的的几个函数
2006/09/07 Javascript
javascript下过滤数组重复值的代码
2007/09/10 Javascript
jquery 获取表单元素里面的值示例代码
2013/07/28 Javascript
JS小功能(onmouseover实现选择月份)实例代码
2013/11/28 Javascript
javascript折半查找详解
2015/01/26 Javascript
JavaScript实现找质数代码分享
2015/03/24 Javascript
适用于javascript开发者的Processing.js入门教程
2016/02/24 Javascript
Bootstrap基本插件学习笔记之标签切换(17)
2016/12/08 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
JS得到当前时间的方法示例
2017/03/24 Javascript
JavaScript判断浏览器和hack滚动条的写法
2017/07/23 Javascript
在Vue中使用highCharts绘制3d饼图的方法
2018/02/08 Javascript
jQuery实现ajax回调函数带入参数的方法示例
2018/06/26 jQuery
Django+vue跨域问题解决的详细步骤
2019/01/20 Javascript
浅谈发布订阅模式与观察者模式
2019/04/09 Javascript
vue监听浏览器原生返回按钮,进行路由转跳操作
2020/09/09 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
python计算一个序列的平均值的方法
2015/07/11 Python
Python利用前序和中序遍历结果重建二叉树的方法
2016/04/27 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
Python 读写文件的操作代码
2018/09/20 Python
python GUI库图形界面开发之PyQt5访问系统剪切板QClipboard类详细使用方法与实例
2020/02/27 Python
OpenCV读取与写入图片的实现
2020/10/13 Python
python 逆向爬虫正确调用 JAR 加密逻辑
2021/01/12 Python
CSS3转换功能transform主要属性值分析及实现分享
2012/05/06 HTML / CSS
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
更夫岗位责任制
2014/02/11 职场文书
幼儿园教师获奖感言
2014/03/11 职场文书
高中学生评语大全
2014/04/25 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
担保书范文
2015/01/20 职场文书
2015年护理工作总结范文
2015/04/03 职场文书
政府会议通知范文
2015/04/15 职场文书