2012-09-09 100 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代替后的数据(会话,数据库等)。