我创建了一个注册表单,成功将其变量从注册页面(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>
谢谢!
答案 0 :(得分: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
是文本字段值。
你在代码中错过了那个。只需用我的代码更新它就可以了
答案 1 :(得分:1)
为什么你不想使用php会话?请说明不使用它的任何理由。我这样问,因为我的声誉不允许我评论我自己以外的问题或答案。请不要-1为此。
另一种方法可能是使用cookie临时存储数据,但是与会话相比,在post请求中来回发布数据确实是不安全的。
答案 2 :(得分: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页时更新。