簡體   English   中英

PHP-session_id沒有指向正確的session_name

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM