Session 会话未在CakePHP 1.2中执行重定向

Session 会话未在CakePHP 1.2中执行重定向,session,cakephp,redirect,Session,Cakephp,Redirect,我有一个CakePHP1.2版本,我刚刚从1.1升级。不幸的是,会话无法正常工作 我花了数小时在stackoverflow上的其他线程上,尝试了提供的解决方案,到目前为止,什么都没用 当用户登录时:accounts/login, 我在accounts_controller.php中这样设置会话 $this->Session->write('Account', $someone['Account']); print_r($this->Session->read());

我有一个CakePHP1.2版本,我刚刚从1.1升级。不幸的是,会话无法正常工作

我花了数小时在stackoverflow上的其他线程上,尝试了提供的解决方案,到目前为止,什么都没用

当用户登录时:accounts/login, 我在accounts_controller.php中这样设置会话

$this->Session->write('Account', $someone['Account']);

print_r($this->Session->read());

$this->redirect("/accounts/profile");
exit;
由于读取内容显示了所有正确的会话信息,因此会话肯定会被保存。 然而,一旦它重定向到/profile,一切都消失了

   function profile() {
     print_r($this->Session->Read());
其输出为:

Array ( [Config] => Array ( [userAgent] => [time] => 1376738563 [timeout] => 10 ) )
我已经将核心的cake安全级别设置为较低,但仍然不起作用

Configure::write('Security.level', 'low');
我的问题基本上与此相同:

但我确信我的会话正在被保存(我打开了硬盘上的会话文件进行验证)。对于这个问题,没有其他解决办法

我还发现这条线索非常有用,但这里给出的解决方案对我也不起作用:

我对php.ini设置不是很熟练。我可能错过了一些非常简单的事情,但我马上就要脱发了。你能给我一个我可能遗漏的线索吗

如果有人认为我的php.ini文件和core.php蛋糕文件有用的话,我很乐意发布

以下是相关的核心设置:

Configure::write('Session.save', 'cake'); //I have tried 'php' also
Configure::write('Session.cookie', 'CAKEPHP');
Configure::write('Session.timeout', '120');
Configure::write('Session.start', true);
Configure::write('Session.checkAgent', false);
Configure::write('Security.level', 'low');
在阅读此帖子后,我添加了以下内容: 它在之前或之后都不起作用。:)

Cookie在我的浏览器上启用,我尝试了firefox和chrome。我现在正在使用localhost,所以我可以完全访问所有文件。 请问任何必要的问题-我绝望了


编辑:我可以把我的网站推到一个实时服务器上,我知道在这个服务器上其他网站的一切都是有效的。我的网站在那台服务器上运行得很好。这验证了问题出在我的计算机/apache/php上的设置上。

好的,让我把这也作为一个稍微改写的答案发布

如图所示,此类问题通常与cookie相关,因此首先要做的是检查cookie是否实际被接收、设置并发送回服务器

大多数浏览器都可以开箱即用地检查是否设置了Cookie,在Firefox中,可以在页面信息对话框(页面信息>安全>隐私和历史>查看Cookie)中找到Cookie,在Chrome中,它们隐藏在高级内容设置中(设置>显示高级设置>隐私>内容设置>所有Cookie和站点数据),在IE中,可通过开发者工具(缓存>查看Cookie信息)获得这些设置

检查Cookie是否被接收和发送可以通过大多数浏览器的开发者工具来完成,在Firefox中,它可以在控制台和网络选项卡中进行检查(Firefox按钮或工具>Web开发者>Web控制台>控制台/网络),在Chrome中,它可以在网络选项卡中找到(F12>网络),就像在IE中一样(F12>网络>Cookies

未发送的cookie(我们认为是您的问题)很可能是由错误的域和/或路径值引起的,cookie仅为安全连接定义,或者cookie可能已过期。检查PHP会话cookie设置是否正确配置可以使用,这将显示值对于
生存期
路径
安全
httponly
设置,最有可能发现问题


当然,也可能有浏览器设置、扩展等导致问题,因此最好使用新的默认浏览器配置文件进行测试(如果浏览器支持该配置文件)。

对于初学者,请检查
$this->Session->id()的值
在重定向之前和之后,可能会根据它们是否匹配缩小可能的原因(它们应该在
Security.Level=low上匹配)。在
$this->Session->errors
中是否有任何内容?您是否检查了cookie是否已实际存储和发送?另一方面,您应该跳过1.2并升级到至少1.3
2013-08-17 10:38:05调试:cab9q09rbpkft8r2ngjll3qdt3
2013-08-17 10:38:06调试:L0IIBB23201B47B4B4Q6ERVJ1I4
2013-08-17 10:38:06调试:第一行是重定向前的ID。第二行是重定向后的ID。(不同)。第三行是$this->Session->errors的输出。(空白)我不太熟悉Cookie,如何检查它是否被存储和发送?另外,请参阅上面的编辑-它在live server上工作。@ndmTo查看Cookie,在Firefox中:
右键单击>查看页面信息>安全>查看Cookie
。检查它们是否被发送(和接收):
Firefox按钮或工具>Web开发者>Web控制台>控制台
重新加载页面,单击与您的请求相匹配的适当列表条目,在弹出窗口中查看
发送的Cookie/接收的Cookie
@ndm-Hmm,我想您已经发现了问题。Firefox没有在页面信息中列出该站点存储的任何Cookie。它是声明此网站未在我的计算机上存储任何Cookie。(然而,在线网站说,正如预期的那样)。控制台确实列出了收到的Cookie。每个页面加载的哈希值不同-以下是其中之一:
received Cookie CAKEPHP:plpc92af1a82javhgba5667hj1
我没有看到“发送的Cookie”任何地方。我非常感谢你的帮助。我需要做什么才能让我的本地主机版本设置cookies?我真的说不出来,这并不是说只有一个开关需要打开…我现在想到的cookies没有被发送的唯一原因是它们过期了,或者路径或域是错误的ong.检查以确保配置了正确的值。@ndm-awesome!!这对我来说是可行的。我试图在localhost上解决这个问题。我刚刚清空了值
 Configure::write('Security.cookie', 'cakephpfdebackend');
 Configure::write('Session.cookieTimeout', 10000);
 Configure::write('Session.cookie_secure',false);
 Configure::write('Session.referer_check' ,false);
 Configure::write('Session.defaults', 'php');