【问题标题】:CakePHP - session timeoutCakePHP - 会话超时
【发布时间】:2013-12-19 07:50:02
【问题描述】:

我在 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>

【问题讨论】:

  • 到目前为止你尝试过什么?找到“倒计时”JavaScript 应该很容易,因此只需使用正确的值对其进行初始化……
  • 您应该始终提及您正在使用的确切 cakephp 版本。

标签: php session cakephp


【解决方案1】:

由于人们对你很苛刻,而且这是你第一次来这里,所以我会稍微温和一点。我不给你答案,但关键点:

  • 您可以阅读 $this-&gt;Session-&gt;read('Config.time') 以获取会话结束时间的 unix 时间戳。
  • moment.js 等一些 javascript 库在处理时间、倒计时等方面非常出色。请查看 fromNow - 您也可以在未来使用它。

希望这会有所帮助;)

【讨论】:

    【解决方案2】:

    你可以这样写

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

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

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

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

    如果 'Session.timeout' x 300 中的“低”会话超时

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

      • 你不懂我。我想在网站上显示消息,例如:您将被自动注销(cookie 过期时间)。
      猜你喜欢
      • 2011-05-09
      • 1970-01-01
      • 2018-08-10
      • 2013-06-18
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多