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 相关文章推荐
手把手教你使用DedeCms V3的在线采集图文教程
Apr 03 PHP
PHPThumb PHP 图片缩略图库
Mar 11 PHP
php中strtotime函数用法详解
Nov 15 PHP
php中current、next与reset函数用法实例
Nov 17 PHP
php实现按指定大小等比缩放生成上传图片缩略图的方法
Dec 15 PHP
php curl请求信息和返回信息设置代码实例
Apr 27 PHP
PHP Imagick完美实现图片裁切、生成缩略图、添加水印
Feb 22 PHP
浅谈PHP中的错误处理和异常处理
Feb 04 PHP
thinkphp下MySQL数据库读写分离代码剖析
Apr 18 PHP
PHP魔术方法之__call与__callStatic使用方法
Jul 23 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 PHP
laravel-admin的多级联动方法
Sep 30 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
WIN98下Apache1.3.14+PHP4.0.4的安装
2006/10/09 PHP
PHP FOR MYSQL 代码生成助手(根据Mysql里的字段自动生成类文件的)
2011/07/23 PHP
php日期操作技巧小结
2016/06/25 PHP
使用PHPMailer发送邮件实例
2017/02/15 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
Jquery下:nth-child(an+b)的使用注意
2011/05/28 Javascript
Node.js与PHP、Python的字符处理性能对比
2014/07/06 Javascript
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
javascript异步处理工作机制详解
2015/04/13 Javascript
node.js学习之base64编码解码
2016/10/21 Javascript
自学实现angularjs依赖注入
2016/12/20 Javascript
JavaScript实现网页头部进度条刷新
2017/04/16 Javascript
ionic2屏幕适配实现适配手机、平板等设备的示例代码
2017/08/11 Javascript
node+multer实现图片上传的示例代码
2020/02/18 Javascript
深入浅析vue全局环境变量和模式
2020/04/28 Javascript
[01:00:12]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第一场
2018/04/09 DOTA
[01:06]欢迎来到上海,TI9
2018/08/26 DOTA
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
Python实现网站表单提交和模板
2019/01/15 Python
python 获得任意路径下的文件及其根目录的方法
2019/02/16 Python
对python3.4 字符串转16进制的实例详解
2019/06/12 Python
pycharm 安装JPype的教程
2019/08/08 Python
python通用读取vcf文件的类(复制粘贴即可用)
2020/02/29 Python
Python urllib request模块发送请求实现过程解析
2020/12/10 Python
详解python的变量缓存机制
2021/01/24 Python
意大利灯具购物网站:Lampade.it
2018/10/18 全球购物
Ray-Ban雷朋西班牙官网:全球领先的太阳眼镜品牌
2018/11/28 全球购物
Prototype是怎么扩展DOM的
2014/10/01 面试题
高级Java程序员面试题
2016/06/23 面试题
征兵宣传标语
2014/06/20 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
写好求职信的技巧解密
2019/05/14 职场文书
成人成长感言如何写?
2019/08/16 职场文书
漫画「你在春天醒来」第10卷封面公开
2022/03/21 日漫