Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Zend Framework 2 session life time

I am trying to set the max life time of a session with the \Zend\Session\Container. To test it I put it to 1 sec.

Now I looked at the docs

So i did

$config = new StandardConfig();
$config->setOptions(array(
    'remember_me_seconds' => 1,
));
$manager = new SessionManager($config);
$session = new Container('user', $manager);

But no success. Then I started googling and found this answer

So I made the config to

return array(
    'session' => array(
        'remember_me_seconds' => 2419200,
        'use_cookies' => true,
        'cookie_httponly' => true,
    ),
);

(the config worked and was loaded into the manager) but again no success

So I continued searching and found this answer

But again no success.

So after all the searching I couldn't get it working, so now I hope some one else got it working and can help me.

like image 560
MKroeders Avatar asked Oct 22 '13 18:10

MKroeders


People also ask

How long is a PHP session valid?

By default, session variables last until the user closes the browser. So; Session variables hold information about one single user, and are available to all pages in one application.

Does Zend own PHP?

Zend is referred to as “The PHP Company,” and for good reason. Zend was founded in 2003 by Andi Gutmans and Zeev Suraski — two of the driving forces behind the historical improvement and widespread adoption of PHP.

What is the use of Zend framework in PHP?

Zend Framework is a collection of professional PHP packages with more than 570 million installations. It can be used to develop web applications and services using PHP 5.6+, and provides 100% object-oriented code using a broad spectrum of language features.


1 Answers

Well I finaly found out what the issue was.

The problem was that I used

$sessionConfig = new SessionConfig();
$sessionConfig->setOptions(array(
    'use_cookies' => true,
    'cookie_httponly' => true,
    'gc_maxlifetime' => $config['authTimeout'],
));
$manager = new SessionManager($sessionConfig);

This "worked" the only issue was that there was set a cookie with the lifetime session. This ment different things in browsers. Ie in chrome it is destroyed if you close the tab, so no matter how high the gc_maxlifetime it would not work.

So an easy fix would be the following

$sessionConfig = new SessionConfig();
$sessionConfig->setOptions(array(
    'use_cookies' => true,
    'cookie_httponly' => true,
    'gc_maxlifetime' => $config['authTimeout'],
    'cookie_lifetime' => $config['authTimeout'],
));
$manager = new SessionManager($sessionConfig);

Hope it would help some one in the futue

$config['authTimeout'] is a positive integer value

like image 162
MKroeders Avatar answered Sep 28 '22 19:09

MKroeders