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的图形函数中显示汉字
Oct 09 PHP
php PDO中文乱码解决办法
Jul 20 PHP
PHP 日志缩略名的创建函数代码
May 26 PHP
PHP正确解析UTF-8字符串技巧应用
Nov 07 PHP
php+js实现图片的上传、裁剪、预览、提交示例
Aug 27 PHP
php根据身份证号码计算年龄的实例代码
Jan 18 PHP
PHP中iconv函数知识汇总
Jul 02 PHP
PHP中使用substr()截取字符串出现中文乱码问题该怎么办
Oct 21 PHP
PHP常用工具类大全附全部代码下载
Dec 07 PHP
phalcon框架使用指南
Feb 23 PHP
php文件上传、下载和删除示例
Aug 28 PHP
PHP Swoole异步Redis客户端实现方法示例
Oct 24 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编写的抽奖程序中奖概率算法
2015/05/14 PHP
php通过各种函数判断0和空
2020/07/04 PHP
PHP7 安装event扩展的实现方法
2019/10/08 PHP
js之WEB开发调试利器:Firebug 下载
2007/01/13 Javascript
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
JS获取计算机mac地址以及IP的实现方法
2014/01/08 Javascript
判断一个对象是否为jquery对象的方法
2014/03/12 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
详解js图片轮播效果实现原理
2015/12/17 Javascript
总结Node.js中的一些错误类型
2016/08/15 Javascript
简单理解vue中track-by属性
2016/10/26 Javascript
mockjs,json-server一起搭建前端通用的数据模拟框架教程
2017/12/18 Javascript
node中间层实现文件上传功能
2018/06/11 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
详解React中共享组件逻辑的三种方式
2021/02/02 Javascript
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python标准库defaultdict模块使用示例
2015/04/28 Python
将Python的Django框架与认证系统整合的方法
2015/07/24 Python
Python 实现淘宝秒杀的示例代码
2018/01/02 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
完美解决Python 2.7不能正常使用pip install的问题
2018/06/12 Python
Python中断多重循环的思路总结
2019/10/04 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
用python实现学生管理系统
2020/07/24 Python
如何一键升级Python所有包
2020/11/05 Python
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
Giglio俄罗斯奢侈品购物网:男士、女士、儿童高级时装
2018/07/27 全球购物
英语专业个人求职自荐信
2013/09/21 职场文书
贷款担保书范文
2014/05/13 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
教师党员批评与自我批评发言稿
2014/10/15 职场文书
导盲犬小Q观后感
2015/06/11 职场文书
聘任合同书
2015/09/21 职场文书
Redis遍历所有key的两个命令(KEYS 和 SCAN)
2021/04/12 Redis
nginx实现动静分离的方法示例
2021/11/07 Servers