用户代理更改后,PHP会话将被销毁

时间:2013-02-25 18:36:03

标签: php iphone session cakephp session-management

我有这样的地址example.com/page1。例如,访问者的用户代理是这样的:Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B146。我运行session_id(),PHP会话ID是12345.我可以在临时文件夹中看到“sess_12345”文件。它包含所有会话变量。

经过一些处理后,我将他/她重定向到example.com/page2。访问者的用户代理更改为:Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_2 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Mobile/10B146 Twitter for iPhone。我再次运行session_id()并发现该ID仍然是12345.但是当我检查“sess_12345”文件时,我发现它已被删除。

仅当用户从“Twitter for iPhone”应用程序访问我的网站时才会发生这种情况。我猜会话文件因用户代理更改而被删除,但我不确定。可能是什么原因?

(会话成功,除了这种情况。我使用CakePHP 2.4)

1 个答案:

答案 0 :(得分:1)

Cake有一个设置,用于检查浏览器的用户代理。如果它改变将破坏会话。关闭此设置:

Session.checkAgent