我向你求助,我解释我的问题。在我的User()类中,我写了一个小函数来登录,然后记录会话并设置cookie。会话丢失用户登录
这就是:
public function login($username, $password) {
$this->db->query("SELECT * FROM users WHERE username = :username AND status = :status LIMIT 1");
$this->db->bind(':username', $username);
$this->db->bind(':status', 1);
$row = $this->db->single();
$count = $this->db->rowCount();
if ($count > 0) {
if (password_verify($password, $row['password'])) {
$this->setSession($row);
return true;
} else {
return false;
}
}
}
public function setSession($row) {
$_SESSION['session'] = [
'id' => $row['id'],
'username' => $row['username'],
'email' => $row['email']
];
//set cookie
setcookie("name_cookie", md5($_SESSION['session']['username']/$_SESSION['session']['password']), time()+3600 * 24 * 365);
}
这里是检查功能,如果用户连接与否,来保护网页:
public function isLoggedIn() {
if(isset($_SESSION['session'])) {
return true;
}
return false;
}
我的问题是,即使饼干被设置,不幸的是该会话在总时间到期之后。
我将Cookie设置为一年,但正如我所说的,用户的登录会话在一段时间后过期。我该如何解决这个问题?
session_start()代码是在哪里? –
在includes/config.php中。日志可以持续约40分钟,或多或少,之后您必须再次登录。 –
你为什么使用setcookie函数。 PHP自动将PHPSESSID设置为cookie变量。你只是在setSession函数中打印session_变量 –