1

我有这样的地址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)

4

1 回答 1

1

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

Session.checkAgent

于 2013-02-25T18:42:02.760 回答