我在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/