CakePHP - 会话超时

I use in core.php for logout after 30 minutes this:

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

This work fine. And I would to display countdown message of session timeout, for example in header of page next to the logout button. Could anybody help me?

For example in 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>

Since people are harsh on you and this is your first time here, I shall be a little bit gentle on this. I don't provide you the answer, but key pointers:

  • You can read $this->Session->read('Config.time') to get the unix timestamp of when will be the session ends.
  • Some javascript library like moment.js is great in manipulating time, countdown etc. Check fromNow - you can use it for future too.

Hope this helps ;)

This could also be an issue with php settings.

There is an SO answer here that details how to get around this:

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

for that you can write like that

Configure::write('Session.timeout', '120');

Configure::write('Security.level', 'medium');

if 'high' then Session timeout in 'Session.timeout' x 10,

if 'medium' then Session timeout in 'Session.timeout' x 100,

if 'low' Session timeout in 'Session.timeout' x 300