【问题标题】:html php identifying the form posting datahtml php 识别表单发布数据
【发布时间】:2012-03-15 10:25:58
【问题描述】:

我有一个包含多个表单标签的 php 页面。每个表单都处理一个特定的选项卡。它只是一个搜索,但每个选项卡都提供日期、数字或名称的搜索。

每个表单标签都有不同的名称......如何知道结果页面中提交了哪个表单以相应地自定义数据库搜索?

是 $_POST 或 $_REQUEST 吗?

    <form name="invoice" action="result.php" method="POST"><br><br>
    <form name="customer" action="result.php" method="POST"><br><br>
    <form name="customer" action="result.php" method="POST"><br><br>

上面的每一个都包含一个带有输入框和提交按钮的表格。

谢谢,

【问题讨论】:

    标签: php html


    【解决方案1】:

    我建议为每个表单添加一个隐藏的输入字段,指定表单名称:

    <input type="hidden" name="formname" value="invoice" />
    

    然后您可以使用 $_POST['formname'] 变量来获取它。

    【讨论】:

      【解决方案2】:

      例如,您可以在每个提交按钮中添加名称和值,如下所示:

      <form>
         <input type="submit" name="action" value="search_invoice" />
         ... 
      </form>
      
      <form>
         <input type="submit" name="action" value="search_customer" />
         ...
      </form>
      

      然后在你的 php 中

      switch($_POST['action']) {
         case 'search_invoice':
            // ur code
            break;
      
         case 'search_customer': default:
            // ur code
            break;
      }
      

      但请注意,旧版本的 firefox 无法正确提交输入类型提交的键 => 值对。

      我通常使用的另一种解决方案是添加&lt;input type="hidden" name="action" value="your_customAction" /&gt;

      【讨论】:

      • 谢谢伙计...我会像之前建议的那样继续使用隐藏字段,但很高兴有其他选择
      • 如果用户按下回车键提交表单,Internet Explorer 不会将提交按钮作为 POST 变量发送。
      【解决方案3】:

      一种方法是在每个表单中存储不同的隐藏输入,然后在服务器端检查该隐藏输入以确定它是哪种表单。

      <input type="hidden" name="formname" value="invoice" />
      <input type="hidden" name="formname" value="customer" />
      <input type="hidden" name="formname" value="customer2" />
      

      【讨论】:

        【解决方案4】:
        1. 应使用 GET 方法执行搜索,而不是 POST
        2. 没有name 属性被发送到服务器。
        3. 如果每个选项卡都提供日期、数字或名称的搜索 - 为什么没有相应的搜索字段名称:"date" 用于日期搜索等?

        【讨论】:

          【解决方案5】:

          您应该在所有表单中使用不同的提交按钮名称。

          编辑:-

          如果您在每个表单中只有一个元素,您最好的选择是使用@Petter 的解决方案,因为 IE 存在单个文本元素的错误 - 如果您使用 Enter 键提交表单,则不会设置提交按钮$_POST.

          但如果表单中有多个元素,则可以考虑为提交按钮选择不同的名称。

          【讨论】:

          • 提交按钮并不总是发布——如果您在某些情况下通过回车键提交表单
          • 这是确定使用哪个提交按钮提交表单的一个很好的解决方案,但是当有多个表单时,隐藏输入更安全(因为它无法通过使用正确的浏览器并按在文本字段中输入)。
          • @dldnh: 自己试试吧
          • @Quentin:你也不能通过在文本字段中按回车来绕过。
          • @ShaktiSingh — 是的,你可以。我刚刚建立了一个测试用例。在 IE 中,提交按钮的值只有在我明确单击按钮时才会提交。如果我只是在文本字段中输入并按回车,则仅提交文本字段的值。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-08-21
          • 2016-07-16
          • 1970-01-01
          • 2014-09-15
          • 1970-01-01
          • 1970-01-01
          • 2023-02-18
          相关资源
          最近更新 更多