7

我创建了一个注册表单,它成功地将其变量从注册页面 (go-gold.php) 传递到摘要/验证页面 (go-gold-summary.php)。数据正确显示在第二页上。

但是,我希望能够使用图像按钮返回到注册页面,以防用户输入错误。回过头来,现在应该用第一次输入的数据填充原始表单。

问题是我无法从第二页重新发送/返回数据,回到第一页。我的文本字段显示为空白。我不想使用会话变量。

代码从整个页面中截断。

注册页面(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>

谢谢!

4

3 回答 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"是文本字段“名称”,value是文本字段值。

您在代码中错过了那个。只需用我的代码更新它就可以了

于 2013-04-23T02:53:52.220 回答
1

为什么你不想使用 php 会话?请给出不使用它的任何理由。我这样问是因为我的声誉不允许我评论问题或回答我自己的问题或答案。请不要为此-1。

另一种方法可能是使用 cookie 临时存储数据,但是与会话相比,在 post 请求中来回发布数据确实不安全。

于 2013-04-23T03:01:41.800 回答
0

跨页面维护变量的方法很少。另一种方法是在第二页上使用包含 $_POST 数据的隐藏文本字段的单独表单,并且提交按钮调用上一页。不幸的是,无法绕过浏览器上的“后退按钮”。

我错过了关于会话变量的粗体文本 - 如果这不适用,请忽略:

在服务器端跨页面维护变量的一种方法是使用 $_SESSION

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

session_start();

提交 for 并移至第 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']; } ?>">

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

于 2013-04-23T02:52:35.840 回答