2012-09-09 106 views
1

我終於得到了我的註冊頁面的第一頁工作。在繼續下一頁之前,用戶選擇三個選項之一。我現在有現在的問題是第一頁不會將數據發送到下一頁。下面是PHP不發送POST數據

Registration_1.php代碼:

$reg_type = ""; 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (!empty($_POST["Reg_type"])) { 
     //$reg_type=$_POST["Reg_type"]; 
     //header('Location: Registration_2.php?rtype='.$reg_type); 
     $reg_type=$_POST["Reg_type"]; 
     header('Location: Registration_2.php'); 
    } 
} 
?> 

<form name="frmtype" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post" > 
<input type="radio" name="Reg_type" value="1"/> Registering myself with credit card or bank account <br/> 
<input type="radio" name="Reg_type" value="2"/> Registering multiple people using credit card or bank account <br/> 
<input type="radio" name="Reg_type" value="3"/> Registering multiple people using a purchase order <br/> 
<input type="submit" name="Submit" value="Submit" /> 
<?php 
if(isset($_POST["Submit"]) && !isset($_POST["Reg_type"])) 
    echo "Please select an option"; 
?> 
</form> 

Registration_2.php

<?php 
$regtype=$_POST["Reg_type"]; 

echo "regtype value is:" . $regtype; 
if($regtype==1) { 
?> 

然而regtype是空白,這意味着我不是從以前的頁面獲取任何數據。誰能告訴我問題是什麼?

+0

對於它的價值,你需要使用'$ _SERVER'作爲表單的動作要非常小心。此外,這個問題與Dreamweaver無關。 – David

+3

使用重定向時沒有POST('header('Location:....')')。使用GET-Variables('http_build_query')或會話來轉發變量。 – vstm

+0

它與會話有關。將值存儲在會話變量中,然後您可以在任何頁面上獲取該值 – FirmView

回答

0

您將表單發佈到page1,然後重定向到page2。第2頁由於重定向而無法訪問發佈的數據(該帖子未被攜帶)。

你應該做的是處理頁面1中的數據並在重定向之前存儲它(例如,在一個會話中,或使用你已經註釋掉的查詢字符串)。

另要注意,當你調用使用header重定向,請確保您還exitdie隨即像php documentation提到了(因爲你不能保證網頁會出現停止處理)。

0

首先,當您使用header進行重定向時,POST變量將丟失。您需要通過GET傳遞變量才能在Registration_2.php上檢索它們。

Registration_1.php

//... 
header('Location: Registration_2.php?Reg_type=' . $_POST["Reg_type"]); 
//... 

和Registration_2.php:

$regtype=$_GET["Reg_type"]; 

echo "regtype value is:" . $regtype; if($regtype==1) { 
1

這是因爲你在做一個重定向,使後數據不再存在。

您有幾個選項。 而不是做一個重定向,你可以做一個包括。

你可以存儲

您可以將數據追加到重定向

header('Location: Registration_2.php?Reg_type=' . $_POST['Reg_type');

然後使用上Registration_2 $ _GET代替後的數據(會話,數據庫等)。