簡體   English   中英

會話變量已設置

[英]session variable already set

我有一個'loginStatus'會話變量,該變量在首頁加載時設置。 當第一次設置“ loginStatus”時,我有一個if / else向瀏覽器回顯“第一次設置”的注釋。 從未出現“首次設置”! 我已經清除了緩存,嘗試在Netbeans開發環境之外的瀏覽器窗口中導航到index.php頁面-沒關系。 好像該會話在我的本地主機Web服務器上永久保持活動狀態。

這是代碼,該代碼在首次加載頁面時檢測未初始化的“ loginStatus”會話變量,並僅創建/初始化一次會話變量。

if ( isset($_SESSION['loginStatus']))
{
    // we get here ONLY if the 'loginStatus' session variable has already been
    // created for this user's session.  
    $_SESSION['loginStatus'] = "loginStatus already set!"; 
    echo '<br />Just set the loginStatus to: ' .  $_SESSION['loginStatus'] . '<br /><br />';    
}
else
{
    // we only get here the first time this is sent by the server
    // to the user's browser -- so we need to create the 'loginStatus' session
    // variable because the user just came to our site
    // and has not yet logged in. 
    $_SESSION['loginStatus'] = "First-time initialization of loginStatus"; 
    echo '<br />Just set the loginStatus for the first time!<br /><br />';
}

從沒有在瀏覽器窗口中看到“僅第一次設置loginStatus!”。

我在瀏覽器窗口中看到的是:“只需將loginStatus設置為:loginStatus已設置!”

換句話說,isset()在我的頁面第一次加載時錯誤地返回了true
當我第一次在瀏覽器中加載頁面時,我看不到任何已經存在的會話變量的理由!

盡管我今晚在編寫代碼時多次加載了以上頁面,但據我了解,當您離開最后一頁時,該會話將被破壞。 那么,為什么我的$ _SESSION ['loginStatus']變量像一個已經不受歡迎的親戚一樣徘徊?

會話在php.ini文件中設置的規則(以及對會話GC設置的規則)時被銷毀。當您關閉瀏覽器或瀏覽到其他頁面時,不一定發生這種情況。
閱讀php.net中的會話手冊,並設置適合您的最佳會話規則。

例如,在高安全性站點上,我給會話分配了幾分鍾的時間。 意味着,如果用戶在該時限內未執行任何向服務器發出請求的操作,則該會話將過期。

不確定,但這可能是因為您已將此值保存在Cookie中,

嘗試清除Cookie,然后重新加載頁面

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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