Php 我可以从第二个表单提交并保留第一个表单的POST数据吗?
希望我能让这一切变得更加困难。这就是我要做的。我有一个表单,可以发布并返回数据。我有第二个表单,然后根据第一个表单中的数据向用户询问是/否问题。是否可以从第一个表单提交中捕获POST数据,并将其与第二个表单POST一起传递 这是我的设想Php 我可以从第二个表单提交并保留第一个表单的POST数据吗?,php,post,Php,Post,希望我能让这一切变得更加困难。这就是我要做的。我有一个表单,可以发布并返回数据。我有第二个表单,然后根据第一个表单中的数据向用户询问是/否问题。是否可以从第一个表单提交中捕获POST数据,并将其与第二个表单POST一起传递 这是我的设想 if ($_POST['button_1']) { $params = $_POST; print_r($_POST); // process form data } if ($_POST['button_2']) { // R
if ($_POST['button_1']) {
$params = $_POST;
print_r($_POST);
// process form data
}
if ($_POST['button_2']) {
// Retain the POST data from the first submission
$new_params = $params . $_POST;
print_r($new_params);
// process form data and do some additional stuff
}
<form id="form_1" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
...
<input type="submit" value="Button" name="button_1" id="button_1"/>
</form>
<form id="form_2" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
...
<input type="submit" value="Button" name="button_2" id="button_2"/>
</form>
if($\u POST['button\u 1'])){
$params=$\u POST;
打印(邮政美元);
//处理表单数据
}
如果($_POST['button_2'])){
//保留第一次提交的POST数据
$new_params=$params.$\u POST;
打印(新参数);
//处理表单数据并做一些额外的工作
}
有几种方法可以“伪造”这个
让第一个表单提交给它自己,只需加载$\u请求变量,并使用它们用适当的数据/选项填充第二个表单
提交第一个表单后,通过ajax加载第二个表单,并使用javascript获取当前表单变量并将其提供给ajax函数
你喜欢哪种方法
更新:
这是一个很长的例子,但很有效
<!DOCTYPE html>
<html>
<body>
<form name="first" method="post">
<input type="hidden" name="action" value="firstformdone">
<div style="width:100px;float:left;">
Age:
</div>
<div style="width:200px;float:left;margin-left:20px;">
<input type="text" name="age">
</div>
<div style="clear:both;"></div>
<div style="width:100px;float:left;">
Name:
</div>
<div style="width:200px;float:left;margin-left:20px;">
<input type="text" name="name">
</div>
<div style="clear:both;"></div>
<br>
<?PHP
if (!$_REQUEST['action'] == "firstformdone") {
?>
<input type="submit" value="contine">
<?PHP
}
?>
</form>
<?PHP
if ($_REQUEST['action'] == "firstformdone") {
?>
<form name="second" action="something_else.php" method="post">
<input type="hidden" name="age" value="<?PHP echo $_REQUEST['age']; ?>">
<input type="hidden" name="name" value="<?PHP echo $_REQUEST['name']; ?>">
<div style="width:150px;float:left;">
Preferred games:
</div>
<div style="width:200px;float:left;margin-left:20px;">
<select name="games">
<option value="">Select games</option>
<?PHP
if ($_REQUEST['age'] <= 10) {
?>
<option value="tlddlywinks">Tiddly Winks</option>
<option value="Jacks">Jacks</option>
<option value="Go-Fish">Go-Fish</option>
<option value="Hid-And-Go-Seek">Hid-And-Go-Seek</option>
<?PHP
} else {
?>
<option value="Halo">Halo</option>
<option value="StarWars">The Old Republic</option>
<option value="LaserTag">Laser Tag</option>
<option value="spin-the-bottle">spin-the-bottle</option>
<?PHP
}
?>
</select>
</div>
<div style="clear:both;"></div>
<br>
<input type="submit" value="Next!">
</form>
<?PHP
}
?>
</body>
</html>
年龄:
姓名:
您需要将第一个表单中的数据打包,以便重新提交。使用隐藏字段:
foreach ($_POST as $key=>$value) {
print "<input type='hidden' name='".htmlspecialchars($key, ENT_QUOTES, "UTF-8")." value='".htmlspecialchars($value, ENT_QUOTES, "UTF-8")."'>";
}
foreach($\u发布为$key=>$value){
打印“您可以在第二个表单或会话中使用隐藏字段。从这里开始阅读:
是的,标准方法是使用type=“hidden”字段将此上下文数据传递到第二个表单上。有许多示例可以了解如何执行此操作。查看此HTML页面的源代码或任何其他表单,并搜索“hidden”“来看看应用程序是如何做到这一点的。为什么不将第一篇文章保存到会话变量中?为什么我总是忘记会话变量?那很好,谢谢!我现在不想使用ajax,所以也许我会尝试第一种方法。在这种情况下,您可以在提交第一个表单之前不显示第二个表单。如果($\u请求){build 2nd form)或smiliar是的,如果您有很多表单元素,请使用@mario的帖子来构建所有隐藏字段:)