我向你求助,我解釋我的問題。在我的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_變量 –