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 相关文章推荐
将RTF格式的文件转成HTML并在网页中显示的代码
Oct 09 PHP
oracle资料库函式库
Oct 09 PHP
php截取字符串并保留完整xml标签的函数代码
Feb 06 PHP
PHP 获取文件权限函数介绍
Jul 11 PHP
ThinkPHP3.1基础知识快速入门
Jun 19 PHP
php实现ip白名单黑名单功能
Mar 12 PHP
PHP实现XML与数据格式进行转换类实例
Jul 29 PHP
基于PHP实现假装商品限时抢购繁忙的效果
Oct 16 PHP
详谈php静态方法及普通方法的区别
Oct 04 PHP
PHP按一定比例压缩图片的方法
Oct 12 PHP
php利用array_search与array_column实现二维数组查找
Jul 08 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
Oct 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
20个PHP常用类库小结
2011/09/11 PHP
查找mysql字段中固定字符串并替换的几个方法
2012/09/23 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
TP5框架页面跳转样式操作示例
2020/04/05 PHP
AppBaseJs 类库 网上常用的javascript函数及其他js类库写的
2010/03/04 Javascript
jquery css 设置table的奇偶行背景色示例
2014/06/03 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
JS表单提交验证、input(type=number) 去三角 刷新验证码
2017/06/21 Javascript
微信小程序图片选择区域裁剪实现方法
2017/12/02 Javascript
JS监听滚动和id自动定位滚动
2018/12/18 Javascript
Javascript实现一朵从含苞到绽放的玫瑰
2019/03/30 Javascript
浅谈JS中this在各个场景下的指向
2019/08/14 Javascript
python正则分组的应用
2013/11/10 Python
python脚本实现分析dns日志并对受访域名排行
2014/09/18 Python
Python使用ntplib库同步校准当地时间的方法
2016/07/02 Python
python 文件操作删除某行的实例
2017/09/04 Python
python分批定量读取文件内容,输出到不同文件中的方法
2018/12/08 Python
python retrying模块的使用方法详解
2019/09/25 Python
Python Django框架模板渲染功能示例
2019/11/08 Python
Python pymysql模块安装并操作过程解析
2020/10/13 Python
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
线程的基本概念、线程的基本状态以及状态之间的关系
2012/10/26 面试题
成人大专生实习期的自我评价
2013/10/02 职场文书
优秀教师工作感言
2014/02/16 职场文书
创新型城市实施方案
2014/03/06 职场文书
关于读书的演讲稿
2014/05/07 职场文书
秋冬农业生产标语
2014/10/09 职场文书
家装电话营销开场白
2015/05/29 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
MySQL命令行操作时的编码问题详解
2021/04/14 MySQL
httpclient调用远程接口的方法
2022/08/14 Java/Android
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js