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 相关文章推荐
在线增减.htpasswd内的用户
Oct 09 PHP
据说是雅虎的一份PHP面试题附答案
Jan 07 PHP
PHP自定义大小验证码的方法详解
Jun 07 PHP
解析php session_set_save_handler 函数的用法(mysql)
Jun 29 PHP
如何使用FireFox插件FirePHP调试PHP
Jul 23 PHP
php获取操作系统语言代码
Nov 04 PHP
PHP命名空间(Namespace)简明教程
Jun 11 PHP
php使用curl打开https网站的方法
Jun 17 PHP
php处理复杂xml数据示例
Jul 11 PHP
PHP多进程编程实例详解
Jul 19 PHP
golang实现php里的serialize()和unserialize()序列和反序列方法详解
Oct 30 PHP
PHP实现获取文件mime类型多种方法解析
May 28 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
PHP微信开发用Cache 解决数据缓存
2016/07/11 PHP
PHP magento后台无法登录问题解决方法
2016/11/24 PHP
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
jQuery实现的指纹扫描效果实例(附演示与demo源码下载)
2016/01/26 Javascript
javascript比较语义化版本号的实现代码
2016/09/09 Javascript
JavaScript制作简易计算器(不用eval)
2017/02/05 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
2017/03/21 jQuery
JS使用数组实现的队列功能示例
2019/03/04 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
JavaScript修改注册表实例代码
2020/01/05 Javascript
JS中的const命令你真懂它吗
2020/03/08 Javascript
原生JS实现无缝轮播图片
2020/06/24 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
python采集博客中上传的QQ截图文件
2014/07/18 Python
python3编码问题汇总
2016/09/06 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
Python HTML解析器BeautifulSoup用法实例详解【爬虫解析器】
2019/04/05 Python
Python通过队列来实现进程间通信的示例
2020/10/14 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
英国领先的酒类网上商城:TheDrinkShop
2017/03/16 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
入学申请自荐信范文
2014/02/26 职场文书
读书活动总结范文
2014/04/26 职场文书
诚信承诺书
2015/01/19 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
反邪教警示教育活动总结
2015/05/09 职场文书
教学副校长工作总结
2015/08/13 职场文书
python 自动化偷懒的四个实用操作
2021/04/11 Python
自从在 IDEA 中用了热部署神器 JRebel 之后,开发效率提升了 10(真棒)
2021/06/26 Java/Android
python中数组和列表的简单实例
2022/03/25 Python
Mysql中mvcc各场景理解应用
2022/08/05 MySQL