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(1)
Oct 09 PHP
一步一步学习PHP(8) php 数组
Mar 05 PHP
约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
Oct 12 PHP
php iconv() : Detected an illegal character in input string
Dec 05 PHP
奇怪的PHP引用效率问题分析
Mar 23 PHP
学习php设计模式 php实现建造者模式
Dec 07 PHP
非常经典的PHP文件上传类分享
May 15 PHP
laravel中的一些简单实用功能
Nov 03 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
Mar 08 PHP
laravel 数据验证规则详解
Oct 23 PHP
PHP设计模式概论【概念、分类、原则等】
May 01 PHP
PHP实现简单注册登录系统
Dec 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
Oracle 常见问题解答
2006/10/09 PHP
用PHP实现文件上传二法
2006/10/09 PHP
Yii2 hasOne(), hasMany() 实现三表关联的方法(两种)
2017/02/15 PHP
Add Formatted Data to a Spreadsheet
2007/06/12 Javascript
用jquery ajax获取网站Alexa排名的代码
2009/12/12 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
jquery实现滑屏大图定时收缩为小banner图片的广告代码
2015/09/02 Javascript
基于JavaScript实现动态添加删除表格的行
2016/02/01 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
javascript编写简易计算器
2017/05/06 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
layui框架中layer父子页面交互的方法分析
2017/11/15 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
vue 属性拦截实现双向绑定的实例代码
2018/10/24 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
layui问题之自动滚动二级iframe页面到指定位置的方法
2019/09/18 Javascript
Vue和React有哪些区别
2020/09/12 Javascript
Python实现把回车符\r\n转换成\n
2015/04/23 Python
Python实现修改IE注册表功能示例
2018/05/10 Python
python3 BeautifulSoup模块使用字典的方法抓取a标签内的数据示例
2019/11/28 Python
python+gdal+遥感图像拼接(mosaic)的实例
2020/03/10 Python
简单掌握CSS3中resize属性的用法
2016/04/01 HTML / CSS
请解释在new与override的区别
2012/10/29 面试题
英文求职信结束语大全
2013/10/26 职场文书
旅游管理毕业生自荐信
2013/11/05 职场文书
环境工程毕业生自荐信
2013/11/17 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书
入党积极分子个人总结
2015/03/02 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
2015年采购员工作总结
2015/04/27 职场文书
篮球赛新闻稿
2015/07/17 职场文书
学习心得体会
2019/06/20 职场文书
2019年消防宣传标语集锦
2019/11/21 职场文书
Java 超详细讲解数据结构中的堆的应用
2022/04/02 Java/Android