让用户登录9小时,直到单击注销



我在Godaddy共享托管中遇到脚本问题。用户被随机注销,

有人能帮助修复我的代码,让用户登录至少9小时,而不会在登录后丢失会话吗?

我尝试了很多方法,比如通过php.ini和htaccess增加session.gc.lifetime,但用户仍然会随机注销。

这是我的登录执行php代码

include('password.php');
class User extends Password{
private $_db;
function __construct($db){
parent::__construct();
$this->_db = $db;
}
private function get_user_hash($username){
try {
$stmt = $this->_db->prepare('SELECT member_id, employee_id, password, username, level, team FROM crm_members WHERE username = :username ');
$stmt->execute(array('username' => $username));
return $stmt->fetch();
} catch(PDOException $e) {
echo '<p class="bg-danger">'.$e->getMessage().'</p>';
}
}
public function login($username,$password){
$row = $this->get_user_hash($username);
if($this->password_verify($password,$row['password']) == 1){
$_SESSION['crm_loggedIn'] = true;
$_SESSION['crm_member_id'] = $row['member_id'];
$_SESSION['crm_employee_id'] = $row['employee_id'];
$_SESSION['crm_username'] = $row['username'];
$_SESSION['crm_level'] = $row['level'];
$_SESSION['crm_team'] = $row['team'];

return true;            
}
}
public function crm_logout(){   
session_destroy();
}
public function is_logged_in(){
if(isset($_SESSION['crm_loggedIn']) && $_SESSION['crm_loggedIn'] == true){
return true;
}
}
}

我把这段代码放在每一页中,以检查用户是否登录了

if(!$user->is_logged_in()){ header('Location: login.php'); }

这是用于注销的.php

$user->crm_logout();

如果你能帮我解决以上代码的问题,我将不胜感激。

提前感谢

查看以下内容是否有帮助。

在PHP中添加以下内容;

<?php
// Server Keeps session for 32400 seconds which is actually 9 hours. That is 3600 x 9
ini_set('session.gc_maxlifetime', 32400);
// Client remembers session for 32400 seconds which is actually 9 hours. That is 3600 x 9 
session_set_cookie_params(32400); 
?>

请参阅此处的文档以供参考https://www.codeleaks.io/increase-session-timeout-in-php/

相关内容

最新更新