【问题标题】:PHP Check which form was submittedPHP 检查提交的表单
【发布时间】:2014-02-04 15:02:09
【问题描述】:

我正在一个网站上工作,我的 1 页上有 2 个表单。我使用 1 个 PHP 脚本来检查表格。但是如果我在页面上提交我的第二个表单,我的网站会提交第一个表单。如何查看提交的表格?

<!--// Form 1-->
<form method="post">

<input type="text" name="test">
<input type="submit" name="submit">
<input type="hidden" name="page_form" value="1">

</form>

<!--// Form 2-->
<form method="post">

<input type="text" name="test">
<input type="submit" name="submit">
<input type="hidden" name="page_form" value="2">

</form>

PHP:

if(isset($_POST['submit'])) {

    $forms = array(1, 2);
    foreach($forms as $form) {

        if($_POST['page_form'] == $form) {
        // All my form validations which are for every form the same.

        }       
    }            
}    

【问题讨论】:

  • 我看不出你的问题是什么 $_POST['page_form'] 应该是 1 或 2,那是已经提交的表单
  • 使用不同的名称提交
  • @JesperBunnyJensen 所以你的意思是这段代码应该可以工作?但它没有
  • @MarioJohnathan 将“提交”更改为“提交”,但仍然无法正常工作。
  • 所以你的意思是,HTML 在点击第二个表单时决定提交第一个表单?从来没有遇到过!?!

标签: php forms submit form-submit


【解决方案1】:

这样做是为了什么:

<!--// Form 1-->
<form method="post">

<input type="text" name="test">
<input type="submit" name="form1" value="Submit form">

</form>

<!--// Form 2-->
<form method="post">

<input type="text" name="test">
<input type="submit" name="form2" value="Submit form">

</form>

并检查提交的表单:

if(isset($_POST["form1"]))
   echo "Form 1 have been submitted";
else if(isset($_POST["form2"]))
   echo "Form 2 have been submitted";

【讨论】:

  • 如果表单是通过 Enter 键提交的,那么提交按钮变量将会丢失。
【解决方案2】:

我刚刚测试了这个,我从来没有遇到过任何问题:

index.html

<!--// Form 1-->
<form method="post" action="submit.php">

<input type="text" name="test">
<input type="submit" name="submit">
<input type="hidden" name="page_form" value="1">

</form>

<!--// Form 2-->
<form method="post" action="submit.php">

<input type="text" name="test">
<input type="submit" name="submit">
<input type="hidden" name="page_form" value="2">

</form>

提交.php

<?php
print_r($_POST);

尝试使用表单 1 和数据 aaa 提交 结果:

Array ( [test] => aaa [submit] => Submit [page_form] => 1 )

尝试使用表单 2 和数据 bbb 提交 结果:

Array ( [test] => bbb [submit] => Submit [page_form] => 2 )

所以我看不出是什么不工作

【讨论】:

    【解决方案3】:

    我不明白你的问题是什么。
    虽然有点复杂,但您显示的代码应该可以正常工作。

    如果您正在寻找更简单的变体,我宁愿这样做:

    if(isset($_POST['page_form'])) 
    {
        switch ($_POST['page_form'])
        {
        case "1": // form 1 specific handling
            break;
        case "2": // form 2 specific handling
            break;
        default:
            die ("something's not right there");
        }
    
        // common handling
    }
    

    编辑:

    试试这个。如果它不起作用,我会感到惊讶。

    <?php
    if(isset($_POST['page_form'])) 
    {
        switch ($_POST['page_form'])
        {
        case "1": // form 1 specific handling
            echo "form 1 submitted<br>";
            break;
        case "2": // form 2 specific handling
            echo "form 2 submitted<br>";
           break;
        default:
            die ("something's not right there");
        }
    
        // common handling
        foreach ($_POST as $var => $val) echo "$var => $val<br>";
    }
    ?>
    
    <form method="post">
    <input type="text" name="test">
    <input type="submit" name="submit">
    <input type="hidden" name="page_form" value="1">
    </form>
    
    <form method="post">
    <input type="text" name="test">
    <input type="submit" name="submit">
    <input type="hidden" name="page_form" value="2">
    </form>
    

    现在,如果您不想对不同的表单进行特殊处理,只需执行以下操作:

    <?php
    if(isset($_POST['page_form'])) 
    {   
        // common handling
        foreach ($_POST as $var => $val) echo "$var => $val<br>";
    }
    ?>
    

    【讨论】:

    • 但由于某种原因它不起作用。而且我想为两种形式使用 1 个代码以保持简单,并且不想在每种情况下都复制我的整个代码。
    • 它在我的服务器上运行。如果您不想根据提交的表单做任何特别的事情,只需移除开关即可。
    【解决方案4】:
    <!DOCTYPE html>
    <?php if($_SERVER['REQUEST_METHOD'] == 'POST'){
        print_r($_POST);
    } ?>
    <html>
        <head>
            <meta charset="UTF-8">
            <title>TRY</title>
        </head>
        <body>
            <form action="" method="post">
                <input type="text" name="test1" value='test1'>
                <input type="submit" value='Save 1'>
            </form><hr>
            <form action="" method="post">
                <input type="text" name="test2" value='test2'>
                <input type="submit" value='Save 2'>
            </form>
        </body>
    </html>
    

    【讨论】:

      猜你喜欢
      • 2016-02-04
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      • 2019-07-26
      • 2015-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多