Skip to main content
Notice removed Draw attention by THE AMAZING
Bounty Ended with Nick's answer chosen by THE AMAZING
added 34 characters in body
Source Link
THE AMAZING
  • 128
  • 1
  • 12
<?php
class SESSION_handler{
public static $gc_maxlifetime;
public static $cookie_lifetime;
public $time_at_last_session;
function __construct(){
    self::$gc_maxlifetime = ini_get('session.gc_maxlifetime');
    self::$cookie_lifetime = ini_get('session.cookie_lifetime');
    if(session_status() == PHP_SESSION_NONE) {
        session_start();
    }
}
public function get($session_key){
    if(session_status() == PHP_SESSION_NONE) {
        if(!empty($_SESSION[$session_key])){
            $this->time_at_last_session$_SESSION['time_at_last_session'] = time();
            return $_SESSION[$session_key];
        }
    }
    return undefined;
}
public function set($session_key, $session_value){
    if(session_status() == PHP_SESSION_NONE) {
        $this->time_at_last_session$_SESSION[$session_key] = time();$session_value;
        $_SESSION[$session_key]$_SESSION['time_at_last_session'] = $session_value;time();
        return $_SESSION[$session_key];
    }
    return undefined;
}
public function session_expired(){
    if(
        time() - $this->time_at_last_session((!empty($_SESSION['time_at_last_session']))? $_SESSION['time_at_last_session'] : 0) >= self::$gc_maxlifetime ||
        session_status() == PHP_SESSION_NONE ||
        !isset($_COOKIE[session_name()])
        ){
        return true;
    }
    return false;
}
}
?>
<?php
class SESSION_handler{
public static $gc_maxlifetime;
public static $cookie_lifetime;
public $time_at_last_session;
function __construct(){
    self::$gc_maxlifetime = ini_get('session.gc_maxlifetime');
    self::$cookie_lifetime = ini_get('session.cookie_lifetime');
    if(session_status() == PHP_SESSION_NONE) {
        session_start();
    }
}
public function get($session_key){
    if(session_status() == PHP_SESSION_NONE) {
        if(!empty($_SESSION[$session_key])){
            $this->time_at_last_session = time();
            return $_SESSION[$session_key];
        }
    }
    return undefined;
}
public function set($session_key, $session_value){
    if(session_status() == PHP_SESSION_NONE) {
        $this->time_at_last_session = time();
        $_SESSION[$session_key] = $session_value;
        return $_SESSION[$session_key];
    }
    return undefined;
}
public function session_expired(){
    if(
        time() - $this->time_at_last_session >= self::$gc_maxlifetime ||
        session_status() == PHP_SESSION_NONE ||
        !isset($_COOKIE[session_name()])
        ){
        return true;
    }
    return false;
}
}
?>
<?php
class SESSION_handler{
public static $gc_maxlifetime;
public static $cookie_lifetime;
function __construct(){
    self::$gc_maxlifetime = ini_get('session.gc_maxlifetime');
    self::$cookie_lifetime = ini_get('session.cookie_lifetime');
    if(session_status() == PHP_SESSION_NONE) {
        session_start();
    }
}
public function get($session_key){
    if(session_status() == PHP_SESSION_NONE) {
        if(!empty($_SESSION[$session_key])){
            $_SESSION['time_at_last_session'] = time();
            return $_SESSION[$session_key];
        }
    }
    return undefined;
}
public function set($session_key, $session_value){
    if(session_status() == PHP_SESSION_NONE) {
        $_SESSION[$session_key] = $session_value;
        $_SESSION['time_at_last_session'] = time();
        return $_SESSION[$session_key];
    }
    return undefined;
}
public function session_expired(){
    if(
        time() - ((!empty($_SESSION['time_at_last_session']))? $_SESSION['time_at_last_session'] : 0) >= self::$gc_maxlifetime ||
        session_status() == PHP_SESSION_NONE ||
        !isset($_COOKIE[session_name()])
        ){
        return true;
    }
    return false;
}
}
?>
Tweeted twitter.com/StackCodeReview/status/724675529014652931
Notice added Draw attention by THE AMAZING
Bounty Started worth 100 reputation by THE AMAZING
appended interest
Source Link
THE AMAZING
  • 128
  • 1
  • 12

At this point i am interested to see other techniques on handling session timeouts.

<?php
class SESSION_handler{
    public static $gc_maxlifetime;
    public static $cookie_lifetime;
    public $time_at_last_session;
    function __construct(){
        self::$gc_maxlifetime = ini_get('session.gc_maxlifetime');
        self::$cookie_lifetime = ini_get('session.cookie_lifetime');
        if(session_status() == PHP_SESSION_NONE) {
            session_start();
        }
    }
   public function get($session_key){
        if(session_status() == PHP_SESSION_NONE) {
            if(!empty($_SESSION[$session_key])){
                $this->time_at_last_session = time();
                return $_SESSION[$session_key];
            }
        }
        return undefined;
    }
   public function set($session_key, $session_value){
        if(session_status() == PHP_SESSION_NONE) {
            $this->time_at_last_session = time();
            $_SESSION[$session_key] = $session_value;
            return $_SESSION[$session_key];
        }
        return undefined;
    }
   public function session_expired(){
        if(
            time() - $this->time_at_last_session >= self::$gc_maxlifetime ||
            session_status() == PHP_SESSION_NONE ||
            !isset($_COOKIE[session_name()])
            ){
            return true;
        }
        return false;
    }
}
?>
<?php
    $SESSION = new SESSION_handler();
    if($SESSION.session_expired->session_expired()){
        echo "true";
    }else{
        echo "false";
    }
?>
<?php
class SESSION_handler{
    public static $gc_maxlifetime;
    public static $cookie_lifetime;
    public $time_at_last_session;
    function __construct(){
        self::$gc_maxlifetime = ini_get('session.gc_maxlifetime');
        self::$cookie_lifetime = ini_get('session.cookie_lifetime');
        if(session_status() == PHP_SESSION_NONE) {
            session_start();
        }
    }
    function get($session_key){
        if(session_status() == PHP_SESSION_NONE) {
            if(!empty($_SESSION[$session_key])){
                $this->time_at_last_session = time();
                return $_SESSION[$session_key];
            }
        }
        return undefined;
    }
    function set($session_key, $session_value){
        if(session_status() == PHP_SESSION_NONE) {
            $this->time_at_last_session = time();
            $_SESSION[$session_key] = $session_value;
            return $_SESSION[$session_key];
        }
        return undefined;
    }
    function session_expired(){
        if(
            time() - $this->time_at_last_session >= self::$gc_maxlifetime ||
            session_status() == PHP_SESSION_NONE ||
            !isset($_COOKIE[session_name()])
            ){
            return true;
        }
        return false;
    }
}
?>
<?php
    $SESSION = new SESSION_handler();
    if($SESSION.session_expired()){
        echo "true";
    }else{
        echo "false";
    }
?>

At this point i am interested to see other techniques on handling session timeouts.

<?php
class SESSION_handler{
public static $gc_maxlifetime;
public static $cookie_lifetime;
public $time_at_last_session;
function __construct(){
    self::$gc_maxlifetime = ini_get('session.gc_maxlifetime');
    self::$cookie_lifetime = ini_get('session.cookie_lifetime');
    if(session_status() == PHP_SESSION_NONE) {
        session_start();
    }
}
public function get($session_key){
    if(session_status() == PHP_SESSION_NONE) {
        if(!empty($_SESSION[$session_key])){
            $this->time_at_last_session = time();
            return $_SESSION[$session_key];
        }
    }
    return undefined;
}
public function set($session_key, $session_value){
    if(session_status() == PHP_SESSION_NONE) {
        $this->time_at_last_session = time();
        $_SESSION[$session_key] = $session_value;
        return $_SESSION[$session_key];
    }
    return undefined;
}
public function session_expired(){
    if(
        time() - $this->time_at_last_session >= self::$gc_maxlifetime ||
        session_status() == PHP_SESSION_NONE ||
        !isset($_COOKIE[session_name()])
        ){
        return true;
    }
    return false;
}
}
?>
<?php
    $SESSION = new SESSION_handler();
    if($SESSION->session_expired()){
        echo "true";
    }else{
        echo "false";
    }
?>
added 5 characters in body
Source Link
THE AMAZING
  • 128
  • 1
  • 12

session.gc_maxlifetime - (default 1440 seconds) defines how long an unused PHP session will be kept alive. For example: A user logs in, browses through your application or web site, for hours, for days. No problem. As long as the time between his clicks never exceed 1440 seconds. It's a timeout value.

session.cookie_lifetime - This value (default 0, which means until the browser's next restart) defines how long (in seconds) a session cookie will live. Sounds similar to session.gc_maxlifetime, but it's a completely different approach. This value indirectly defines the "absolute" maximum lifetime of a session, whether the user is active or not. If this value is set to 6016060, every session ends after an hour.

session.gc_maxlifetime - (default 1440 seconds) defines how long an unused PHP session will be kept alive. For example: A user logs in, browses through your application or web site, for hours, for days. No problem. As long as the time between his clicks never exceed 1440 seconds. It's a timeout value.

session.cookie_lifetime - This value (default 0, which means until the browser's next restart) defines how long (in seconds) a session cookie will live. Sounds similar to session.gc_maxlifetime, but it's a completely different approach. This value indirectly defines the "absolute" maximum lifetime of a session, whether the user is active or not. If this value is set to 60, every session ends after an hour.

session.gc_maxlifetime - (default 1440 seconds) defines how long an unused PHP session will be kept alive. For example: A user logs in, browses through your application or web site, for hours, for days. No problem. As long as the time between his clicks never exceed 1440 seconds. It's a timeout value.

session.cookie_lifetime - This value (default 0, which means until the browser's next restart) defines how long (in seconds) a session cookie will live. Sounds similar to session.gc_maxlifetime, but it's a completely different approach. This value indirectly defines the "absolute" maximum lifetime of a session, whether the user is active or not. If this value is set to 16060, every session ends after an hour.

deleted 413 characters in body; edited tags; edited title
Source Link
200_success
  • 145.7k
  • 22
  • 191
  • 481
Loading
Post Migrated Here from programmers.stackexchange.com (revisions)
Source Link
Loading