我有一个CakePHP应用程序(使用cake 2.3),它使用Session组件在用户第一次访问该站点时向用户显示一个启动页面,而且再也不会。这是控制器中的代码:
public function index() {
if (!$this->Session->check('splashShown')) {
$this->Session->write('splashShown', true);
$this->redirect(array('controller'=>'pages', 'action' => 'about'));
}
//other stuff in controller...
}
这适用于IE,Firefox和Chrome的桌面版本。它也适用于Chrome iOS,但不适用于Safari iOS。在Safari中,Session-> check()函数始终返回false。
任何人都知道在Safari iOS上进行会话的目的是什么?
答案 0 :(得分:0)
检查this answer它处理同样的问题,iOS在这方面有点不同。
答案 1 :(得分:-1)
我怀疑它与存储在互联网浏览器上的会话cookie有关,因为我相信这是PHP用来跨请求保持会话的默认机制。根据请求,如果PHP无法识别会话ID,则会创建一个新会话ID,并在对客户端的响应中,使用会话ID设置cookie。
为了验证这种情况,我很快就用谷歌搜索了一下,我发现了这个:http://rf.com/how-to/how-to-enable-cookies-on-the-iphone/显然这不能解决问题,但会帮助你找出问题的原因。