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过滤危险html代码的函数
Jul 22 PHP
table标签的结构与合并单元格的实现方法
Jul 24 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 PHP
php中函数前加&符号的作用分解
Jul 08 PHP
php打印一个边长为N的实心和空心菱型的方法
Mar 02 PHP
PHP获取二维数组中某一列的值集合
Dec 25 PHP
PHP中file_exists使用中遇到的问题小结
Apr 05 PHP
PC端微信扫码支付成功之后自动跳转php版代码
Jul 07 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
php 读取文件夹下所有图片、文件的实例
Oct 17 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 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
一个没有MYSQL数据库支持的简易留言本的编写
2006/10/09 PHP
php获取字符串中各个字符出现次数的方法
2015/02/23 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
PHP设计模式(六)桥连模式Bridge实例详解【结构型】
2020/05/02 PHP
JAVASCRIPT 对象的创建与使用
2021/03/09 Javascript
JS this作用域以及GET传输值过长的问题解决方法
2013/08/06 Javascript
带有定位当前位置的百度地图前端web api实例代码
2016/06/21 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
基于javascript的Form表单验证
2016/12/29 Javascript
JS中的三个循环小结
2017/06/20 Javascript
基于vue cli 通过命令行传参实现多环境配置
2018/07/12 Javascript
vue项目中使用lib-flexible解决移动端适配的问题解决
2018/08/23 Javascript
angularJs在多个控制器中共享服务数据的方法
2018/09/30 Javascript
微信小程序 子级页面返回父级并把子级参数带回父级实现方法
2019/08/22 Javascript
Vue解决移动端弹窗滚动穿透问题
2020/12/15 Vue.js
[02:08]我的刀塔不可能这么可爱 胡晓桃_1
2014/06/20 DOTA
[02:23]2014DOTA2国际邀请赛中国战队回顾
2014/08/01 DOTA
利用Python和OpenCV库将URL转换为OpenCV格式的方法
2015/03/27 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
Python图像处理之颜色的定义与使用分析
2019/01/03 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
Python读取表格类型文件代码实例
2020/02/17 Python
解决pytorch-yolov3 train 报错的问题
2020/02/18 Python
Pytorch 使用 nii数据做输入数据的操作
2020/05/26 Python
Python实现一个论文下载器的过程
2021/01/18 Python
css3 实现元素弧线运动的示例代码
2020/04/24 HTML / CSS
德国购买健身器材:AsVIVA
2017/08/09 全球购物
美国按摩椅批发网站:Titan Chair
2018/12/27 全球购物
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
洗车工岗位职责
2014/03/15 职场文书
大学生实习证明范本
2014/09/19 职场文书
公司授权委托书
2014/10/17 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python