解决PHP中SESSION丢失(不能跨页面传递)的方法

    文章来源:万象互联 更新时间:2013-7-29 9:55:04
分享:

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

1.客户端禁用了cookie

2.浏览器无法存取cookie

3.php.ini中的session.use_trans_sid=o或编译时没有打开-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_start_sid=1或者编译时打开了-enable-trans-sid选项”。

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

1.设置php.ini中的session.use_trans_sid=1或者是编译时打开了-enable-trans-sid选项,让PHP自动跨页传递session id.

2.手动通过URL传值芬乇淼ゴ輘ession id。

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

版权说明:本站原创文章,由万象互联SEO优化发表.
本文地址:https://www.hulian.top/zixun/post/5841.html
在线咨询
  • 在线时间
  • 8:00-21:00