[英]PHP Session Variable get lost and session id is changing on every request
我找到了有關該問題的許多答案,但沒有任何解決方案能夠解決我的問題-因此,我想向您展示我的代碼,並希望有人能找到錯誤。
我有一個標准的HTML公式編寫器,它使用POST將一些數據提供給下一個.php文件,並在其中保存並將其保存到會話變量中。 我使用有關2個原因的會話變量:
這是代碼:
session_start(); // Handle Variables on post and reloaded-page if(isset($_POST["locId"]) && isset($_POST["dateId"]) ) { $locId = htmlspecialchars($_POST["locId"]); $dateId = htmlspecialchars($_POST["dateId"]); $_SESSION["locId"] = $locId; $_SESSION["dateId"] = $dateId; echo "Session variables are set: locId = " . $_SESSION["locId"] . " dateId = " . $_SESSION["dateId"]; } elseif(isset($_SESSION["locId"]) && isset($_SESSION["dateId"])) { echo "get it from session"; $locId = $_SESSION["locId"]; $dateId = $_SESSIOn["dateId"]; } else { $load_error = 1; $status = "alert alert-danger"; $message = "shit, no variables here"; }
第一個調用工作正常-設置了會話變量,並且回顯給出了正確的值。 重新加載頁面后,我得到回顯“從會話獲取”,但是我的變量沒有值。
我還檢查了我的session_id()在第一次調用和重新加載..他們是不一樣的。
我測試一個簡單的test.php文件,在其中我開始一個帶有變量的會話,並在下一個文件中詢問該變量。 它工作正常:-/
這只是我上面的代碼的問題。 我認為我的網絡服務器處理正確。 但是,導致會話ID丟失並丟失會話變量值的原因是什么?
該死的! 寫正確就是一切...
我發現了我的錯誤。
看我問題中的代碼。 第二個會話變量是$ _SESSIOn [“ dateId”] .. n是小寫! 如果我正確編寫並完成大寫,則可以正常工作。
而且session_id不再耗費時間了,我可以根據需要輸出session_id(),但是$ _SESSIOn中的一個錯誤改變了一切。 每次通話都有新的session_id,很奇怪。
再次學到了一些東西:-)感謝大家的回答和您的寶貴時間! 希望以后能對您有所幫助
好吧,您的錯誤很容易發現。 實際上,您的代碼可以完美運行。 但是請看這部分:
echo "get it from session";
$locId = $_SESSION["locId"];
$dateId = $_SESSIOn["dateId"];
好的,您將會話值分配給了兩個變量,但是實際上,您只是錯過了將它們輸出到任何地方的情況。 這就是為什么您獲得“從會話中獲取”但為什么什么也不顯示的原因,因此您需要echo
它們。
只需添加echo
,它將完美顯示您的var :)
echo "get it from session";
$locId = $_SESSION["locId"];
$dateId = $_SESSIOn["dateId"];
echo $locId;
echo $dateId;
嘗試這個:
SESSION_ID();
在session_start();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.