1. 程式人生 > >php網站登入後頁面有操作永不退出,無操作2小時內退出

php網站登入後頁面有操作永不退出,無操作2小時內退出

這個功能用redis 和session_id結合起來做

先設定session_id永不超時:

$lifeTime = 24 * 3600;//一天
setcookie(session_name(), session_id(), time() + $lifeTime, "/");
這條語句我放在了home.php這個控制器的構造方法中,其他控制器繼承這個控制器,頁面有操作是都會重新設定一次session_id.

 頁面有操作時在把redis過期時間重新設定下

$(document).on('mousedown mouseup click keypress keydown keyup',function () {
    var af  = '';
    $.post('/home/Index/updateRedisExpire',{},function (data) {
        af = data;
        console.log(af);
    },'json');
})
/**
 * 更新redis過期時間
 * @return int
 */
public function updateRedisExpire(){
    $Redis = $this->getRedis();
    $Redis->set('admin_info_'.session_id(),json_encode($this->adminInfo));
    $Redis->set('login_code_'.$this->admin_id,session_id());

    $Redis->expire('admin_info_'.session_id(),Config('Redis.expire'));
    $Redis->expire('login_code_'.$this->admin_id,Config('Redis.expire'));
    $t2 = $Redis->ttl('admin_info_'.session_id());
    return $t2;
}
/*獲取redis物件*/
protected function getRedis(){
    if(!self::$redis instanceof \Redis){
        self::$redis = new \Redis();
        self::$redis->connect(config('Redis.host'),config('Redis.port'));
        self::$redis->auth(config('Redis.auth_password'));
        self::$redis->select(0);
    }
    return self::$redis;
}