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