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 相关文章推荐
一个用于MySQL的PHP XML类
Oct 09 PHP
用PHP和ACCESS写聊天室(六)
Oct 09 PHP
适用于php-5.2 的 php.ini 中文版[金步国翻译]
Apr 17 PHP
常用PHP框架功能对照表
Oct 23 PHP
PHP+jquery+ajax实现即时聊天功能实例
Dec 23 PHP
ThinkPHP里用U方法调用js文件实例
Jun 18 PHP
详解PHP中的状态模式编程
Aug 11 PHP
Yii2前后台分离及migrate使用(七)
May 04 PHP
Netbeans 8.2将支持PHP7 更精彩
Jun 13 PHP
浅谈php调用python文件
Mar 29 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
Apr 23 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 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
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
php 图片上传类代码
2009/07/17 PHP
CI框架(CodeIgniter)公共模型类定义与用法示例
2017/08/10 PHP
PHP长连接实现与使用方法详解
2018/02/11 PHP
Javascript实例教程(19) 使用HoTMetal(1)
2006/12/23 Javascript
根据一段代码浅谈Javascript闭包
2010/12/14 Javascript
Jquery中Ajax 缓存带来的影响的解决方法
2011/05/19 Javascript
利用jQuery的deferred对象实现异步按顺序加载JS文件
2013/03/17 Javascript
Jquery实现控件的隐藏和显示实例
2014/02/08 Javascript
javascript 自定义回调函数示例代码
2014/09/26 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
Angular实现form自动布局
2016/01/28 Javascript
jquery操作select元素和option的实例代码
2016/02/03 Javascript
JS解决iframe之间通信和自适应高度的问题
2016/08/24 Javascript
基于vue.js中事件修饰符.self的用法(详解)
2018/02/23 Javascript
基于vue1和vue2获取dom元素的方法
2018/03/17 Javascript
JavaScript实现秒杀时钟倒计时
2019/09/29 Javascript
jquery+css3实现的经典弹出层效果示例
2020/05/16 jQuery
js cavans实现静态滚动弹幕
2020/05/21 Javascript
[00:19]CN DOTA NEVER DIE!VG夺冠rOtK接受采访
2019/12/23 DOTA
python学习笔记之调用eval函数出现invalid syntax错误问题
2015/10/18 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
python距离测量的方法
2018/03/06 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
python实现图像高斯金字塔的示例代码
2020/12/11 Python
详解HTML5中的Communication API基本使用方法
2016/01/29 HTML / CSS
字中字效果的实现【html5实例】
2016/05/03 HTML / CSS
神话般的珠宝:Ross-Simons
2020/07/13 全球购物
社区中秋节活动方案
2014/01/29 职场文书
摄影展策划方案
2014/06/02 职场文书
食品安全承诺书范文
2014/08/29 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
湖南省召开党的群众路线教育实践活动总结大会报告
2014/10/21 职场文书
晚会闭幕词
2015/01/28 职场文书
幼儿教师个人总结
2015/02/05 职场文书
签字仪式主持词
2015/07/03 职场文书