• 微信:
  • hai764003
  • QQ:
  • 511211014
  • E-mail:
  • jaquery@163.com

案例总数51

访问总数312394

收藏总数310925

COOKIE、SESSION之彻底搞定!返回列表

上传时间:2015-02-02 内容关键字:COOKIE,SESSION,COOKIE和SESSION




4. session关于php.ini配置项




我们知道一个session2方面的数据共同发挥作用:

1:客户端的cookie

2:服务器端的session文件


要想让session失效也是要从这2个角度来考虑的。



当session.auto_start = 1的时候,每个页面不再用session_start()就可以自动开启,但我们一般不建议利用配置文件 开启session,因为这样的话PHP的一些功能也就受到限制执行不了了,这个时候便不能把对象放入session当中 了,因为类的定义必须在启动session之前加载,而自动设为1的时候,某页面的类还未加载session就已经是开 启 状态了。

在php.ini里,下面的选项控制PHPSESSIDcookie的生命周期,以秒为单位。

注意:如果用户篡改了cookie,让cookie的生命周期为1年,那你也判断不出来。

如果想严格的让sesion就半个小时有效,可以这样:

$_SESSION[‘time’] = 登录时的时间戳

检验session的开启时间。


为什么PHPSESSID对应的cookie失效以后,对应的SESSION也会跟着失效呢?因为虽然服务器中保存着session信息,但是客户端浏览器中的PHPSESSID已经没有了,无法返回给服务器了,也就找不到对应的SESSION值了,就相当于银行里有钱,但是银行卡丢了,钱还是无法取出来。

思考:

如果浏览器中的PHPSESSIDcookie)失效了,难道服务器中的SESSION值还保存着一直占用着空间吗?

答案:

当然不是啦,因为session会定期的清理内存中的垃圾文件。

session的有效路径:

session的有效区域取决于cookiecookie在哪儿有效,session自然就能读到。

如下图:这个配置项就指定了PHPSESSID这个cookie的有效路径是 / 路径,自然session无论在多深的目录下设 置,而session在整个网站都有效。



cookie只能存储字符串/数字这样的标量数据,而session还可以存储数组/对象(除了资源型,其他7种都可以)。

注意:如果你把对象存储在session里,那么另一个读取session的页面,也必须有此对应的类声明才合理。否则,从session里分析出一个对象却没有与之对应的类,则会提示:

__PHP _Incomplete_Class Object 错误信息,意思是对象对应的类不完整。


 

小海哥推荐你看: 博客园  php教程分享网站  phpmywind  脚本之家