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获取地址栏信息的代码
Oct 08 PHP
PHP JSON 数据解析代码
May 26 PHP
vs中通过剪切板循环来循环粘贴不同内容
Apr 30 PHP
PHP 第二节 数据类型之转换
Apr 28 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
Jul 02 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
smarty模板引擎之配置文件数据和保留数据
Mar 30 PHP
php array_slice 取出数组中的一段序列实例
Nov 04 PHP
php判断是否为ajax请求的方法
Nov 29 PHP
Thinkphp整合微信支付功能
Dec 14 PHP
实例讲解YII2中多表关联的使用方法
Jul 21 PHP
PHP 加密 Password Hashing API基础知识点
Mar 02 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版(2)
2006/10/09 PHP
PHP 截取字符串 分别适合GB2312和UTF8编码情况
2009/02/12 PHP
php时间戳转换的示例
2014/03/31 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
2014/10/30 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
JQuery为页面Dom元素绑定事件及解除绑定方法
2014/04/23 Javascript
[原创]推荐10款最热门jQuery UI框架
2014/08/19 Javascript
javascript实现复选框超过限制即弹出警告框的方法
2015/02/25 Javascript
基于javascript实现checkbox复选框实例代码
2016/01/28 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
2016/05/31 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
2016/07/01 Javascript
bootstrap导航、选项卡实现代码
2016/12/28 Javascript
vue封装一个简单的div框选时间的组件的方法
2019/01/06 Javascript
微信小程序(订阅消息)功能
2019/10/25 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
Python 解析XML文件
2009/04/15 Python
Python中使用中文的方法
2011/02/19 Python
使用python BeautifulSoup库抓取58手机维修信息
2013/11/21 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
python中urlparse模块介绍与使用示例
2017/11/19 Python
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
pycharm修改界面主题颜色的方法
2019/01/17 Python
python爬取本站电子书信息并入库的实现代码
2020/01/20 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
css 元素选择器的简单实例
2016/05/23 HTML / CSS
Elemental Herbology官网:英国美容品牌
2019/04/27 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
就业推荐表自我鉴定范文
2014/03/21 职场文书
新春寄语大全
2014/04/09 职场文书
道德演讲稿
2014/05/21 职场文书
2015年公司新年寄语
2014/12/08 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
OpenCV实现常见的四种图像几何变换
2022/04/01 Python