簡體   English   中英

我不知道為什么我的 PHP Session 變量在頁面重定向上被覆蓋

[英]I can't figure out why my PHP Session variables are being overwritten on page redirect

我有一個使用 session 變量的頁面,這些變量是通過 POST 方法從用戶表單輸入創建的。 正在使用以下代碼正確創建 session 變量:

(我正在通過表單上的輸入收集 zip 代碼)

<form name="zipinput" id="zipform" method="post" action="" target="_blank" onsubmit="return valZip();"/>     
 <input id="zip" name="zip" class="zipfield" type="text" value="" />
 </form> 

這是我的 PHP 代碼:

$_SESSION['zip'] = $_POST['zip'];
if(isset($_SESSION['zip'])) {
$zipcode = $_SESSION['zip'];
}

這工作正常。 但是當我 go 從 page1.php 到 page2.php 時,變量被刪除。 我認為 session 變量的全部意義在於能夠在 URL 中在沒有 _GET 或 _POST 的情況下逐頁使用它們。 我還包括: session_start(); 在我的 php 頁面的頂部。

任何想法將不勝感激。 謝謝。

這是因為無論是否實際提供了 zip 值,您都在為 session 分配一個值。 如果不存在 zip 參數,則只需在空白處寫入,這將擦除之前的 zip。 你想做:

if (isset($_POST['zip'])) {
   $_SESSION['zip'] = $_POST['zip'];
}
$zip = $_SESSION['zip'];
if(isset($_POST['zip'])
$_SESSION['zip'] = $_POST['zip'];
if(isset($_SESSION['zip'])) {
$zipcode = $_SESSION['zip'];
}

而不是只在頁面頂部有 session_start() ,嘗試有

if(!isset($_SESSION)):
    session_start();
endif;

您必須在所有頁面上啟動 session。 這是一個很好的候選者,可以在任何其他頁面內容之前被放入 init 文件中任意加載到所有頁面中。就像在 header 中一樣。

如果不這樣做,您保存的 session 將在頁面重定向時被銷毀。

暫無
暫無

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

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