我的网站涉及用户通过多页表单提交数据。我可以将在一页上提交的数据直接传递到下一页,但是如何在此之后将其发送到页面?这是我正在做的非常简化的版本。
第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!";
?>
最后一页应该显示用户的名字,但显然它不起作用,因为我没有将该变量传递给页面。由于复杂的原因,我无法在同一页面上提交所有数据,因此我需要将所有内容拆分。那么如何才能让这个变量和其他变量继续下去呢?
答案 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中具有很多字段的人:)