如何跨多个页面传递多个变量?

时间:2013-11-29 23:58:11

标签: php html form-submit

我的网站涉及用户通过多页表单提交数据。我可以将在一页上提交的数据直接传递到下一页,但是如何在此之后将其发送到页面?这是我正在做的非常简化的版本。

第1页:

<?php
echo "<form action='page2.php' method='post'>
Please enter your name: <input type='text' name='Name'/>
<input type='submit' value='Submit'/></form>";
?>

第2页:

<?php
$name=$_POST["Name"];
echo "Hello $name!<br/>
<form action='page3.php' method='post'>
Please enter your request: <input type='text' name='Req'/>
<input type='submit' value='Submit'/></form>";
?>

第3页:

<?php
echo "Thank you for your request, $name!";
?>

最后一页应该显示用户的名字,但显然它不起作用,因为我没有将该变量传递给页面。由于复杂的原因,我无法在同一页面上提交所有数据,因此我需要将所有内容拆分。那么如何才能让这个变量和其他变量继续下去呢?

7 个答案:

答案 0 :(得分:6)

使用会话:

每页

session_start();

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

然后在第3页,您可以回显$_SESSION['name']

答案 1 :(得分:1)

您可以将数据存储在用户客户端的 cookie 中,该 cookie 被抽象为会话的概念。请参阅PHP session management

答案 2 :(得分:1)

如果您不想要cookie或会话: 在第二页中使用隐藏的输入字段,并通过发布它来初始化变量:

page2----

$name=$_POST['name'];  /// from page one

<form method="post" action="page3.php">
 <input type="text" name="req">
 <input type="hidden" name="holdname" value="<? echo "$name"?>"> 
 ////////you can start by making the field visible and see if it holds the value
</form>

page3----

$name=$_POST['holdname'];    ////post the form in page 2
$req=$_POST['req'];    ///// and the other field
echo "$name, Your name was successfully passed through 3 pages";

答案 3 :(得分:0)

正如其他人所说,在SESSION中保存数据可能是你最好的选择。

另外,您可以将数据添加到隐藏字段,然后将其发布到:

第2页:

 <input type="hidden" name="username" value="<?php echo $name;?>"/>

PAGE3

echo "hello $_POST['username'};

答案 4 :(得分:0)

您可以创建会话,并使用帖子。您还可以使用$ _GET从URL中获取变量。

请记住,如果您没有使用预准备语句,请确保转义所有用户输入...

答案 5 :(得分:0)

使用SESSION变量或隐藏输入字段

答案 6 :(得分:0)

这是我解决此问题的方法:我没有手动在隐藏的输入字段中键入内容,而是通过$ _POST进行了搜索:

foreach ($_POST as $key => $value) {
    echo '<input type="hidden" name="' . $key . '" value="' . $value . '" />';
}

希望这可以帮助那些在$ _POST中具有很多字段的人:)