php网站登录后页面有操作永不退出,无操作2小时内退出

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zchqq/article/details/82790299

这个功能用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;
}

猜你喜欢

转载自blog.csdn.net/zchqq/article/details/82790299