您当前的位置: 首页 > 网站编程 > PHP教程 > PHP中SESSION丢失

PHP中SESSION丢失

作者:不详 来源:网络 发布时间: 2014-07-15 22:30 点击:
笔者偶然间接到一个问题,客户说网站的session总是会丢失,然后找了好久,始终没有找到啥原因,最后才发现是因为服务器上时间与网络时间对不上,导致用户无法登录或登录马上就退出。在此过程中发现还有可能是其它原因,在此展示,与君共享。 一般来说,使SESSION丢失有

PHP中SESSION丢失

  笔者偶然间接到一个问题,客户说网站的session总是会丢失,然后找了好久,始终没有找到啥原因,最后才发现是因为服务器上时间与网络时间对不上,导致用户无法登录或登录马上就退出。在此过程中发现还有可能是其它原因,在此展示,与君共享。

  一般来说,使SESSION丢失有以下几点:

  1、客户端禁用了cookie

  2、浏览器无法存取cookie

  3、php.ini中的session.use_trans_sid=0或编译时

  没有打开–enable-trans-sid选项

  Session储存于服务器端(默认以文件方式存储),根据客户端提供的session id来得到用户的文件,

  取得变量的值,session id可以使用客户端的Cookie或者Http1.1协议的Query_String

  (就是访问的URL的“?”后面的部分)来传送给服务器,然后服务器读取Session的目录……。也就是说,

  session id是取得存储在服务上的session变量的身份证。当代码session_start();运行的时候,

  就在服务器上产生了一个session文件,随之也产生了与之唯一对应的一个session id,

  定义session变量以一定形式存储在刚才产生的session文件中。通过session id,

  可以取出定义的变量。跨页后,为了使用session,你必须又执行session_start();

  将又会产生一个session文件,与之对应产生相应的session id,

  用这个session id是取不出前面提到的第一个session文件中的变量的,

  因为这个session id不是打开它的“钥匙”。如果在session_start();

  之前加代码session_id($session id);将不产生新的session文件,

  直接读取与这个id对应的session文件。

  PHP中的session在默认情况下是使用客户端的Cookie来保存session id的,

  所以当客户端的cookie出现问题的时候就会影响session了。必须注意的是:

  session不一定必须依赖cookie,这也是session相比cookie的高明之处。

  当客户端的Cookie被禁用或出现问题时,PHP会自动把session id附着在URL中,

  这样再通过session id就能跨页使用session变量了。但这种附着也是有一定条件的,

  即“php.ini中的session.use_trans_sid = 1或者编译时打开打开了–enable-trans-sid选项”。

  明白了以上的道理,现在我们来抛开cookie使用session,主要途径有三条:

  1、设置php.ini中的session.use_trans_sid = 1或者编译时打开打开了–enable-trans-sid选项,

  让PHP自动跨页传递session id。

  2、手动通过URL传值、隐藏表单传递session id。

  3、用文件、数据库等形式保存session_id,在跨页过程中手动调用。

  http://web100.cc
分享到:
本文"PHP中SESSION丢失"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4