Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

CakePHP - session timeout

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>

like image 599
user3027356 Avatar asked Dec 03 '13 10:12

user3027356


People also ask

How to set session timeout in CakePHP?

The cookie timeout is controlled by the session. cookie_lifetime ini value and can be configured using: Configure::write('Session', [ 'defaults' => 'php', 'ini' => [ // Invalidate the cookie after 30 minutes without visiting // any page on the site.

How can I use session in cakephp 4?

To use defaults, simply set the 'defaults' key to the name of the default you want to use. You can then override any sub setting by declaring it in your Session config: Configure::write('Session', [ 'defaults' => 'php' ]); The above will use the built-in 'php' session configuration.

How to destroy session in CakePHP?

To destroy a session, use the destroy() method: $session->destroy(); Destroying a session will remove all serverside data in the session, but will not remove the session cookie.

How can I get session ID in cakephp 3?

In PHP, To get the session id, we have to use like this: session_id();


1 Answers

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 ;)

like image 94
Lionel Chan Avatar answered Sep 21 '22 13:09

Lionel Chan