php中session机制探究

php中session机制探究

ID:26632446

大小:71.00 KB

页数:3页

时间:2018-11-28

php中session机制探究_第1页
php中session机制探究_第2页
php中session机制探究_第3页
资源描述:

《php中session机制探究》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、PHP中SESSION机制探究1、session的有效时间由哪些因素决定的?2、没有了cookie还可以使用session吗?首先问自己这两个问题,如果非常清楚答案就漂过,如果不太清楚,请看看下文并和大家交流一下吧。1、php中session的生成机制本部分设定了隐藏,您已回复过了,以下是隐藏的内容我们先来分析一下PHP中是怎么生成一个session的。设计出session的目的是保持每一个用户的各种状态来弥补HTTP协议的不足(无状态)。我们现在有一个疑问,我们都知道session是保存在服务器的,既然它用于保持每一个用户的状态那它利用什么来区别用户的呢?这个时候就得借助co

2、okie了。当我们在代码中调用session_start();时,PHP会同时往SESSION的存放目录(默认为/tmp/)和客户端的cookie目录各生成一个文件。session文件名称像这样:格式为sess_{SESSIONID},这时session文件中没有任何内容,当我们在session_start();添加了这两行代码:复制代码1.2.$_SESSION['name']='wanchun0222';3.$_SESSION['blog']='coderbolg.com';这时文件就有内容了:复制代码1.name

3、s:11:"wanchun0222";blog

4、s:13:

5、"coderbolg.com";这时再看看cookie:可以看到服务器为我们自动生成了一个cookie,cookie名称为"PHPSESSID",cookie内容是一串字符,其实这串字符就是{SESSIONID}。也许你已经明白了,当我们使用session时,PHP就先生成一个唯一的SESSIONID号(如2bd170b3f86523f1b1b60b55ffde0f66),再在我们服务器的默认目录下生成一个文件,文件名为sess_{SESSIONID},同时在当前用户的客户端生成一个cookie,内容已经说过了。这样PHP会为每一个用户生成一个SESSIONID,也就是说一个用

6、户一个session文件。PHP第一次为某个用户使用session时就向客户端写入了cookie,当这个用户以后访问时,浏览器会带上这个cookie,PHP在拿到cookie后就读出里面的SESSIONID,拿着这个SESSIONID去session目录下找session文件。找到后在调用$_SESSION['blog']的时候显示出来。2、php中session的过期回收机制我们明白了session的生成及工作原理,发现在session目录下会有许多session文件。当然这些文件一定不是永远存在的,PHP一定提供了一种过期回收机制。在php.ini中session.gc_m

7、axlifetime为session设置了生存时间(默认为1440s)。如果session文件的最后更新时间到现在超过了生存时间,这个session文件就被认为是过期的了。在下一次session回收的时候就会被删除。那下一次session回收是在什么时候呢?这和php请求次数有关的。在PHP内部机制中,当php被请求了N次后就会有一次触发回收机制。到底是请求多少次触发一次是通过以下两个参数控制的:复制代码1.session.gc_probability=12.session.gc_divisor=100这是php.ini的默认设置,意思是每100次PHP请求就有一次回收发生。概

8、率是gc_probability/gc_divisor。我们了解了服务器端的session过期机制,再来看看客户端的cookie的过期机制。如果cookie失效了浏览器自然发送不了cookie到服务器,这时即使服务器的session文件存在也没用,因为PHP不知道要读取哪个session文件。我们知道PHP的cookie过期时间是在创建时设置的,那么PHP在创建session的同时为客户端创建的cookie的生命周期是多久呢?这个在php.ini中有设置:session.cookie_lifetime。这个值默认是0,代表浏览器一关闭SESSIONID就失效。那就是说我们把se

9、ssion.gc_maxlifetime和session.cookie_lifetime设置成同一个值就可以控制session的失效时间了。3、php中session的客户端存储机制由上面的介绍我们可以知道,如果用户关闭了cookie,那我们的session就完全没法工作了。是的,确实是这样。php中session的客户端存储机制只有cookie吗?不是的。既然我们的SESSIONID不能通过cookie传递到各个页面,那我们还有另一个法宝,就是通过页面GET传值的方式。PHP可以在cook

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。