CakePHP - 会话超时

时间:2013-12-03 10:04:08

标签: php session cakephp

我在core.php中使用30分钟后注销:

Configure::write('Session', array(
    'defaults' => 'php',
    'timeout' => 30,            // auto logout after 30 minutes
    'cookieTimeout' => 1440,    // session cookie 24 hours
    'autoRegenerate' => true    // regenerate session
));

这项工作很好。我会显示会话超时的倒计时消息,例如在注销按钮旁边的页眉中。有人能帮助我吗?

例如在default.ctp。

<body>
<div id="container">
    <div id="header">
        <div style="float: right;">
            <?php

         // display countdown of session timeout:
         // You will be automatically logged off for (time to expire cookie timeout)

            // Logout button    
            echo $this->Html->link(__('Logout'), array('controller' => 'users', 'action' => 'logout'), array('escape' => false));
            ?>
        </div>
    </div>
    <div id="content">

    </div>
</div>

3 个答案:

答案 0 :(得分:9)

既然人们对你很苛刻,这是你第一次来这里,我对此会有点温柔。我不是给你答案,而是关键指点:

  • 您可以阅读$this->Session->read('Config.time')以获取会话结束时间的unix时间戳。
  • moment.js这样的一些javascript库非常适合操作时间,倒计时等。检查fromNow - 您也可以将其用于将来。

希望这会有所帮助;)

答案 1 :(得分:0)

为此你可以这样写

配置:: write('Session.timeout','120');

配置:: write('Security.level','medium');

如果为'high',则会话超时'Session.timeout'x 10,

如果是'medium',则会话超时'Session.timeout'x 100,

如果'Session'超时'x 300中的'低'会话超时

答案 2 :(得分:-2)

这也可能是php设置的问题。

这里有一个SO答案,详细说明如何解决这个问题:

https://stackoverflow.com/a/3585057/1291499