[英]PHP - session_id does not point the the right session_name
我們正在使用具有多種服務的服務器。 因此,為確保php會話不混合,我們要為每個服務使用不同的cookie。 我們創建了一個名為sec_session_start
的函數,在其中定義了該服務的cookie( mySession
)。 然后,我們創建了另一個名為start_my_session
函數以連接到服務cookie。
每次我們嘗試使用start_my_session
,它都會在PHPSESSID而不是mySession中獲取信息。 我該如何解決。
僅在一個位置(用戶登錄系統時)調用以下功能。
function sec_session_start() {
$secure = false;
$httponly = true;
// Forces sessions to only use cookies.
if (ini_set('session.use_only_cookies', 1) === FALSE) {
header("Location: ../error.php?err=Could not initiate the safe session (ini_set)");
exit();
}
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $secure, $httponly);
session_name('mySession');
session_start(); // Start the PHP session.
echo session_id(); // USE AT THE MOMENT FOR DEBUGGING ONLY
}
最后一條指令返回的會話ID是與mySession cookie對應的ID。 (我在服務器/ tmp文件夾中和Chrome的資源調試器中進行了檢入。)
用戶登錄后,將在其他所有安全頁面中調用以下函數。
function start_my_session() {
echo session_name('mySession').'<br>'; // DEBUG : display PHPSESSID
echo session_name().'<br>'; // DEBUG : display mySession
session_start(); // Start the mySession
echo session_id(); // DEBUG : display the PHPSESSID session id
}
如評論中所述,session_id仍指向PHPSESSID而不是mySession。
關於我們做錯了什么以及如何解決的任何建議?
這聽起來可能不合邏輯,但您會認為我很生氣,但是:
在使用session_name(...)
切換會話名稱之前(是的,這也意味着在會話開始之前!)...運行session_write_close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.