在页面之间传递PHP变量

7
我已经创建了一个注册表单,成功地将变量从注册页面(go-gold.php)传递到摘要/验证页面(go-gold-summary.php),第二个页面上的数据显示正确。
但是,我希望能够使用一个图像按钮返回到注册页面,以防用户输入错误。在返回后,原始表格现在应该填充首次输入的数据。
问题在于,我无法将第二页的数据重新发送/返回到第一页。我的文本字段出现空白。我不想使用Session变量。 该代码是从整个页面截取的。
注册页面(go-gold.php):
<?php
$customer_name = $_POST['customer_name'];
?>

<form action="go-gold-summary.php" method="post">

Name: <input type="text" name="customer_name" id="customer_name" value= "<?php echo $customer_name ?>" />
<input name="<?php echo $customer_name ?>" type="hidden" id="<?php echo $customer_name ?>">

</form>

汇总页面(go-gold-summary.php)

<?php
$customer_name = $_POST['customer_name'];
?>

<form action="go-gold.php" method="post">

Name: <?php echo $customer_name ?> <input type="hidden" id="<?php echo $customer_name ?>" name="<?php echo $customer_name ?>">

<INPUT TYPE="image" src="images/arrow_back.png" id="arrow" alt="Back to Registration"> (Button to go back to Registration Page)

</form>

谢谢!


3
我敢问为什么 $_SESSION 是受限制的?(意思是询问为什么 $_SESSION 受到限制) - svidgen
3个回答

2

go-gold-summary.php 应该像这样进行更改。

<?php
$customer_name = $_POST['customer_name'];
?>

<form action="go-gold.php" method="post">

Name: <?php echo $customer_name ?> <input type="hidden" value="<?php echo $customer_name ?>" name="customer_name">

<INPUT TYPE="submit" src="images/arrow_back.png" id="arrow" alt="Back to Registration"> (Button to go back to Registration Page)

</form>

注意我已经改变了这行代码。
<input type="hidden" id="<?php echo $customer_name ?>" name="<?php echo $customer_name ?>">

变成这样

<input type="hidden" value="<?php echo $customer_name ?>" name="customer_name">

$_POST是一个关联数组,当您提交表单时,它将被填充为以下内容:

$_POST["index"] = value;

"index"是文本字段"name",value是文本字段的值。

你在代码中漏掉了这个。只需使用我的代码进行更新,它就会正常工作。


如果您将来遇到类似的问题,请尝试在您的PHP文档顶部编写var_dump($_POST);,您将看到您做错了什么以及在哪里出错了。 - Saturnix

1
为什么不想使用PHP会话?请给出任何不使用它的理由。我这样问是因为我的声誉不允许我评论问题或回答除自己以外的任何问题。请不要-1为此。
另一种方法可能是使用cookie临时存储数据,但与会话相比,这种方式和来回在POST请求中发布数据真的不安全。

0

在页面间保持变量的方法非常有限。另一种方法是在第二个页面上有一个单独的表单,其中包含隐藏的文本字段,包含 $_POST 数据,提交按钮调用前一页。不幸的是,无法避免浏览器上的“后退按钮”。

如果不适用,请忽略关于会话变量的粗体文本:

在服务器端保持页面间变量的一种方法是使用 $_SESSION。

首先,在您的 PHP 页面顶部包含以下内容以保持会话活动:

session_start();

一旦您提交表单并移动到第2页,请添加以下内容:

$_SESSION['customer_name'] = $_POST['customer_name'];

另外,在第一页上,您可以将表单元素更改为以下内容:

<input type="text" name="customer_name" value="<?PHP if isset($_SESSION['customer_name'] || !empty($_SESSION['customer_name'])) { echo $_SESSION['customer_name']; } ?>">

这将保留填写的数据,并在用户返回页面时显示它,如果他们输入了不同的内容,则在再次点击第二页时会更新。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接