php網站登入後頁面有操作永不退出,無操作2小時內退出
阿新 • • 發佈:2018-12-11
這個功能用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; }