0
對不起,我不能就已經回答的問題提出問題,因爲我剛剛註冊。PHP會話過期問題
我的問題是會話過期。
它工作正常,並在時間設置後註銷。
我的問題是,當沒有登錄,我重新訪問該網站,然後重定向到註銷頁面。我很確定這對我的seo產生了負面影響。
這是我用過的代碼。
// ********************************* //
// ************ SESSIONS *********** //
// stops javascript from getting the session id. phpacademy
ini_set('session.cookie_httponly', true);
// Start the session:
session_start();
// http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
// last request was more than 60 minutes ago
session_destroy(); // destroy session data in storage
session_unset(); // unset $_SESSION variable for the runtime
header('Location: logged-out.php');
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
// http://stackoverflow.com/questions/520237/how-do-i-expire-a-php-session-after-30-minutes
if (!isset($_SESSION['CREATED'])) {
$_SESSION['CREATED'] = time();
} else if (time() - $_SESSION['CREATED'] > 1800) {
// session started more than 30 minutes ago
session_regenerate_id(true); // change session ID for the current session an invalidate old session ID
$_SESSION['CREATED'] = time(); // update creation time
}
// stops them using proxy servers and other ip addresses.
if (isset($_SESSION['last_ip']) === false);{
$_SESSION['last_ip'] = $_SERVER['REMOTE_ADDR'];
}
if ($_SESSION['last_ip'] !== $_SERVER['REMOTE_ADDR']){
session_unset();
session_destroy();
}
// ************ SESSIONS *********** //
// ********************************* //
我能做些什麼來阻止重定向到註銷時我已經註銷?
我可以看到這是使用statcounter其他人正在發生,他們的訪問頁面是註銷的?
請指教。
所以我會想象這是你的第一個條件導致的問題。你有沒有試過'var_dump($ _ SESSION ['LAST_ACTIVITY'])'來看看它給你什麼值,你不期待?我可以想象,如果你有'$ _SESSION ['LAST_ACTIVITY']這樣一個空字符串值(因爲'time() - 0'總是> 1800),你寫時間比較的方式可能會產生問題。 –
自動重定向到受保護內容的登錄頁面是一個好主意,自動重定向到註銷頁面不是;只有在訪問者真正註銷後(按下按鈕)才能指向註銷的頁面。 – jeroen
@ jeroen謝謝,我有兩個登錄狀態與登錄表單。只是一個人會顯示你已經自動註銷,並感謝你已經安全註銷。兩者都有登錄表單。這仍然是一個問題嗎? – user3191101