在页面之间来回发送PHP变量

时间:2013-04-23 02:47:01

标签: php forms variables post

我创建了一个注册表单,成功将其变量从注册页面(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>

谢谢!

3 个答案:

答案 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页时更新。