Php 我可以从第二个表单提交并保留第一个表单的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

希望我能让这一切变得更加困难。这就是我要做的。我有一个表单,可以发布并返回数据。我有第二个表单,然后根据第一个表单中的数据向用户询问是/否问题。是否可以从第一个表单提交中捕获POST数据,并将其与第二个表单POST一起传递

这是我的设想

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的帖子来构建所有隐藏字段:)