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字符串截取问题
Nov 28 PHP
php 远程关机操作的代码
Dec 05 PHP
php $_SERVER["REQUEST_URI"]获取值的通用解决方法
Jun 21 PHP
一篇有意思的技术文章php介绍篇
Oct 26 PHP
php调用mysql存储过程实例分析
Dec 29 PHP
php下Memcached入门实例解析
Jan 05 PHP
php文件夹的创建与删除方法
Jan 24 PHP
windows下安装php的memcache模块的方法
Apr 07 PHP
Linux下快速搭建php开发环境
Mar 13 PHP
PHP堆栈调试操作简单示例
Jun 15 PHP
PHP获取当前系统时间的方法小结
Oct 03 PHP
ThinkPHP5.0框架验证码功能实现方法【基于第三方扩展包】
Mar 11 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中实现记住密码自动登录的代码
2011/03/02 PHP
php中计算中文字符串长度、截取中文字符串的函数代码
2011/08/09 PHP
PHP使用PHPMailer发送邮件的简单使用方法
2013/11/12 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
PHP中使用socket方式GET、POST数据实例
2015/04/02 PHP
php实现网站留言板功能
2015/11/04 PHP
JavaScript 判断指定字符串是否为有效数字
2010/05/11 Javascript
js校验表单后提交表单的三种方法总结
2014/02/28 Javascript
玩转方法:call和apply
2014/05/08 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
推荐6款基于jQuery实现图片效果插件
2014/12/07 Javascript
jquery表单验证插件(jquery.validate.js)的3种使用方式
2015/03/28 Javascript
javascript实现简单的html5视频播放器
2015/05/06 Javascript
JavaScript框架是什么?怎样才能叫做框架?
2015/07/01 Javascript
js获取当前时间(昨天、今天、明天)
2016/11/23 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
Vue的百度地图插件尝试使用
2017/09/06 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
浅谈Angular 的变化检测的方法
2018/03/01 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
Vue2.5学习笔记之如何在项目中使用和配置Vue
2018/09/26 Javascript
VUE脚手架的下载和配置步骤详解
2019/04/01 Javascript
python 接口_从协议到抽象基类详解
2017/08/24 Python
Python3.6笔记之将程序运行结果输出到文件的方法
2018/04/22 Python
numpy中loadtxt 的用法详解
2018/08/03 Python
对python 调用类属性的方法详解
2019/07/02 Python
Python中remove漏删和索引越界问题的解决
2020/03/18 Python
python数据库开发之MongoDB安装及Python3操作MongoDB数据库详细方法与实例
2020/03/18 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
买卖正宗运动鞋:GOAT
2019/12/06 全球购物
优秀党员转正的自我评价
2013/10/06 职场文书
护士优质服务演讲稿
2014/08/26 职场文书
贷款工资证明范本
2015/06/12 职场文书