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+APACHE实现用户论证的方法
Oct 09 PHP
DedeCms模板安装/制作概述
Mar 11 PHP
一个简单php扩展介绍与开发教程
Aug 19 PHP
php查找指定目录下指定大小文件的方法
Nov 28 PHP
Yii2使用dropdownlist实现地区三级联动功能的方法
Jul 18 PHP
PHP中include()与require()的区别说明
Feb 14 PHP
PHP 进度条函数的简单实例
Sep 19 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
PDO::rollBack讲解
Jan 29 PHP
PHP使用JpGraph绘制折线图操作示例【附源码下载】
Oct 18 PHP
php使用fputcsv实现大数据的导出操作详解
Feb 27 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使用unset()删除数组中某个单元(键)的方法
2015/02/17 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
另一个javascript小测验(代码集合)
2011/07/27 Javascript
JSCode all of Brower 全局屏蔽网页右键功能 具体实现
2013/06/05 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
5个JavaScript经典面试题
2014/10/13 Javascript
使用AngularJS实现表单向导的方法
2015/06/19 Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
2016/09/04 Javascript
React组件的三种写法总结
2017/01/12 Javascript
JavaScript学习总结(一) ECMAScript、BOM、DOM(核心、浏览器对象模型与文档对象模型)
2018/01/07 Javascript
VUE 使用中踩过的坑
2018/02/08 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
javascript事件监听与事件委托实例详解
2019/08/16 Javascript
Vue实现购物车详情页面的方法
2019/08/20 Javascript
jquery中attr、prop、data区别与用法分析
2019/09/25 jQuery
jquery 键盘事件 keypress() keydown() keyup()用法总结
2019/10/23 jQuery
JS函数进阶之prototy用法实例分析
2020/01/15 Javascript
vue相关配置文件详解及多环境配置详细步骤
2020/05/19 Javascript
nodeJs项目在阿里云的简单部署
2020/11/27 NodeJs
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
python通过BF算法实现关键词匹配的方法
2015/03/13 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
Python TestSuite生成测试报告过程解析
2020/07/23 Python
丽笙酒店官方网站:Radisson Hotels
2019/05/07 全球购物
在阿尔卑斯山或希腊度过快乐假期:Alpine Elements
2019/12/28 全球购物
护士岗前培训自我评鉴
2014/02/28 职场文书
做一个有道德的人活动实施方案
2014/08/23 职场文书
六查六看六改心得体会
2014/10/14 职场文书
2015上半年个人工作总结
2015/07/27 职场文书
数据库连接池
2021/04/06 MySQL
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL