Session 如何为CakePhp设置会话变量以与Chrome一起使用?

Session 如何为CakePhp设置会话变量以与Chrome一起使用?,session,cakephp,google-chrome,session-variables,Session,Cakephp,Google Chrome,Session Variables,我正在使用CakePhp开发一个网站。当上传到服务器并使用Firefox进行测试时,一切都很好 使用Google Chrome时,似乎没有创建会话变量 如果我尝试访问主页,我将首先重定向到登录页面。登录后,它不会将我重定向到主页,而是再次重定向到登录页面 我注意到,会话变量不是用Chrome创建的,但可以用Firefox正常工作。查看此页面 这是我的建议 因为使用浏览器时应该更改服务器行为?我不知道Chrome对referer做了什么,但它似乎在某些方面改变了它。 cakePHP强制将sessi

我正在使用CakePhp开发一个网站。当上传到服务器并使用Firefox进行测试时,一切都很好

使用Google Chrome时,似乎没有创建会话变量

如果我尝试访问主页,我将首先重定向到登录页面。登录后,它不会将我重定向到主页,而是再次重定向到登录页面

我注意到,会话变量不是用Chrome创建的,但可以用Firefox正常工作。

查看此页面 这是我的建议

因为使用浏览器时应该更改服务器行为?我不知道Chrome对referer做了什么,但它似乎在某些方面改变了它。 cakePHP强制将session.referer_check的设置为true,从而检查具有相同PHPSESSID的多个请求是否来自同一url。
如php.net上发布的:

如果为session.referer\u检查指定了值,则可以运行 当有人访问您的站点并试图登录时,会遇到困难 使用错误大写的URL。登录将失败,因为对 session_start()将导致现有会话被丢弃,并且 正在创建一个新的。登录时,这将成为一个更大的问题 后跟一个标题(“位置:…”)重定向,因为 页面顶部的会话_start()将失败

这两种设置加在一起,你就搞得一团糟。我首先通过在app/webroot/index.php中强制设置session_start()找到了一个快速修复方法。但经过更多的阅读和调试,我终于找到了罪魁祸首

破解你的修复程序 没有简单的方法可以阻止cake设置此设置,但您可以在session.save configure key中定义自己的会话处理程序。
只需在app/config/中创建名为session_custom.php的文件,并设置Configure::write('session.save','session_custom');在core.php文件中。
在该文件中,只需删除以下行(从cake_session.php复制/粘贴)

检查这一页 这是我的建议

因为使用浏览器时应该更改服务器行为?我不知道Chrome对referer做了什么,但它似乎在某些方面改变了它。 cakePHP强制将session.referer_check的设置为true,从而检查具有相同PHPSESSID的多个请求是否来自同一url。
如php.net上发布的:

如果为session.referer\u检查指定了值,则可以运行 当有人访问您的站点并试图登录时,会遇到困难 使用错误大写的URL。登录将失败,因为对 session_start()将导致现有会话被丢弃,并且 正在创建一个新的。登录时,这将成为一个更大的问题 后跟一个标题(“位置:…”)重定向,因为 页面顶部的会话_start()将失败

这两种设置加在一起,你就搞得一团糟。我首先通过在app/webroot/index.php中强制设置session_start()找到了一个快速修复方法。但经过更多的阅读和调试,我终于找到了罪魁祸首

破解你的修复程序 没有简单的方法可以阻止cake设置此设置,但您可以在session.save configure key中定义自己的会话处理程序。
只需在app/config/中创建名为session_custom.php的文件,并设置Configure::write('session.save','session_custom');在core.php文件中。
在该文件中,只需删除以下行(从cake_session.php复制/粘贴)


如果我是对的,那么您正试图通过从url检索get值来设置会话 如果是这样,我建议您使用经典的php风格的url,如 和使用 $\u在控制器中获取['id']以检索值


我可以这么说,因为我不久前也遇到了同样的问题,我在很多博客中搜索了一个合适的解决方案,但没有找到任何解决方案,但使用上述方法解决了我的问题p

如果我是对的,那么您正试图通过从url检索get值来设置会话 如果是这样,我建议您使用经典的php风格的url,如 和使用 $\u在控制器中获取['id']以检索值


我可以这么说,因为我不久前也遇到了同样的问题,我在很多博客中搜索了一个合适的解决方案,但没有找到任何地方,而是使用上述方法解决了我在你的
app/Config/core.php中的p

Configure::write('Session', array(
    'defaults' => 'cake',
        'timeout'  => 14400,  // 4 hours 
        'cookieTimeout' => 14400, // 4 hours 
        'cookie' => 'cookiename',
        )
    );
检查“cookie”中没有空格,即使下划线也可能导致问题


不久前有这个问题,我花了一段时间才解决…

在你的
app/Config/core.php

Configure::write('Session', array(
    'defaults' => 'cake',
        'timeout'  => 14400,  // 4 hours 
        'cookieTimeout' => 14400, // 4 hours 
        'cookie' => 'cookiename',
        )
    );
检查“cookie”中没有空格,即使下划线也可能导致问题


不久前我就遇到了这个问题,我花了一段时间才解决…

1)你在Chrome上禁用了Cookie吗?2) 它在Safari中有效吗?3) 你能提供一个链接吗?1)你在Chrome上禁用cookie了吗?2) 它在Safari中有效吗?3) 你能提供一个链接吗?看起来不像cakephp解决方案看起来不像cakephp解决方案