cakephp-session变量的行为一直很奇怪

cakephp-session变量的行为一直很奇怪,cakephp,session-variables,Cakephp,Session Variables,出于我无法理解的原因,包含客户名称的会话变量将出现一段时间,然后消失 在app_controller.php:beforeFilter()中 我尝试了不同的方法来检查会话是否设置为 if ($this->Session->check('customer_name') == false) 一切都以同样的奇怪方式运行,它将在视图中显示一段时间,然后消失。关闭浏览器或再次登录时不会返回。对该代码的随机小更改似乎会在短时间内使其恢复活力。不确定问题出在哪里,但我首先要删除$\u会话调用。我

出于我无法理解的原因,包含客户名称的会话变量将出现一段时间,然后消失

在app_controller.php:beforeFilter()中

我尝试了不同的方法来检查会话是否设置为

if ($this->Session->check('customer_name') == false)

一切都以同样的奇怪方式运行,它将在视图中显示一段时间,然后消失。关闭浏览器或再次登录时不会返回。对该代码的随机小更改似乎会在短时间内使其恢复活力。

不确定问题出在哪里,但我首先要删除$\u会话调用。我也会改变

strlen($_SESSION['customer_name']) == 0

我唯一能想到的另一件事是降低/config/core.php中的安全级别,也许您完全丢失了会话?

使用而不是直接的$\u会话调用,因为cakephp可以将会话存储在本地php期望的其他地方

另外,我真的不明白你所说的“消失一段时间”是什么意思,如果你停留在同一个页面上,只是不断点击刷新,它会随机显示/消失吗

关闭浏览器很可能是会话被破坏的原因,你在不同的浏览器上也经历过这种行为吗

您的
会话是什么。*
在app/config/core.php中的会话?

此行:

$name = $customer['Customer']['fname'] . " " . $customer['Customer']['lname'];

允许$name等于“”,这意味着它的strlen为1,并且不是空的。不知道为什么它没有得到客户数据,但现在我可以检查该值

正常情况下,会话将在几分钟后到期。在config/core.php文件中查找以下行:

Configure::write('Session.timeout'


然后将其设置为99999999。这应该可以解决问题。

请注意,有时FireFox扩展可能会导致会话重置。用户代理发生任何更改时,会话都会重置

我最近在使用名为FireHP的FireBug扩展时遇到了这个问题:

这解决了我们的问题:


if($this->Session->check('customer\u name'))

最初我使用从会话助手读取和检查,但随着事情变得更加随机,我放弃了它。根据core.php Session.timeout中的注释,如果您使用的是Session.security设置,则不使用timeout。我的设置为high.Session.timeout始终用作乘数。请参阅core.php中security.level上方的注释你会看到数学。我的答案是我遇到的问题的答案,我只是在等待StackOverflow允许我设置它。
empty($_SESSION['customer_name'])
$name = $customer['Customer']['fname'] . " " . $customer['Customer']['lname'];