我試圖在互聯網和堆棧溢出看我的問題,但沒有找到解決我的問題的答案。所以我有一個我爲一個開源項目創建的網站的後端系統。我現在剛剛完成將所有內容傳輸到我的在線域和數據庫。在解決了很多其他問題之後,它現在可以工作,除了註銷外。PHP註銷將無法在線工作
在我的後端頭我有以下網址:
<a href="logout.php"><h1>Logout</h1></a>
的logout.php頁面的內容如下:
<?php
session_regenerate_id();
session_start();
session_unset();
$_SESSION = array();
session_destroy();
header("Location: login.php");
?>
離線,通過甲基苯丙胺這工作沒有任何問題。但是,它不會破壞我的會話。我仍然可以訪問我的所有會話變量,這使我能夠保持登錄狀態。正如我之前所說的,我試圖尋找答案,但我似乎找不到解決我的問題的答案。如果任何人有線索可能是錯誤的,請告訴我。提前致謝!
編輯: 這是我如何檢查每個後端頁面上,用是否我登錄:
function sec_session_start() {
$session_name = 'sec_session_id'; // Set a custom session name
$secure = false; // Set to true if using https.
$httponly = true; // This stops javascript being able to access the session id.
ini_set('session.use_only_cookies', 1); // Forces sessions to only use cookies.
$cookieParams = session_get_cookie_params(); // Gets current cookies params.
session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
session_name($session_name); // Sets the session name to the one set above.
session_regenerate_id(true); // regenerated the session, delete the old one.
session_start(); // Start the php session
}
正如你看到的,@paulprogrammer,我做了什麼與餅乾。我在註銷時如何銷燬它?
編輯(2):paulprogrammer用於指針
確定感謝。我從我的登錄檢查功能中刪除了Cookie部分,並將其轉換爲以下簡單功能:
function sec_session_start() {
session_start();
}
這不會創建cookie,現在它可以工作。我試圖通過官方php manul所說的@http://php.net/manual/en/function.session-destroy.php來取消cookie的設置,但那並沒有。所以這就是爲什麼我轉向更簡單的方法。由於除我以外沒有多少人會使用後端,因爲它似乎工作正常,即使沒有cookie,我也稱它完成了。本主題可以被關閉:)
最終編輯(3): 好感謝* @paulprogrammer它與cookies現在工作爲好。現在我知道答案了,你必須這樣做似乎是合乎邏輯的。我愚蠢。好吧,顯然我必須設置會話的名稱,就像我在會議中所做的一樣。我一開始就這樣做,在我開始之前。新的,更新日誌的檢查功能代碼:
<?php
session_name('sec_session_id');
session_start();
setcookie(session_name(), '', 100);
session_unset();
session_destroy();
$_SESSION = array();
header("Location: login.php");
?>
您正在查看** cookie **值而不是** session **值的任何機會? – PaulProgrammer
@PauProgrammer我認爲你可能在正確的方向。檢查我的原始帖子的編輯是否有更新。 – GlenDC
嘗試在註銷腳本中執行'session_name($ session_name);',否則PHP將僅銷燬默認會話cookie。 – PaulProgrammer