检查哪个表单已提交PHP的最佳方法

时间:2014-09-13 12:58:15

标签: php forms

所以我一直在考虑这个问题一小时,并且对检查哪个表单提交的最佳方法感兴趣。

让我们说我们已经formOneformTwo提交到formsubmission.php并且在那里我认为最合适的方式来检查提交是

if($_SERVER['REQUEST_METHOD'] == 'POST'){
//do stuff
}

但实际确定WHICH表单的最佳方式是什么,formOne还是Two?

我在这里阅读了What is the best way to identify which form has been submitted?,我想知道这些是否是解决这个问题的唯一两种方法。

我认为只是检查isset($_POST[formname])会因为我在其他地方读到的一些原因而不好,但现在我开始认为发布到同一.php文件的整个想法只是糟糕的做法,并没有很好的方法来检查提交哪个表单这样做。

使用GET并将每个不同的表单提交给单独的ID不良做法?如果是这样 - 为什么?

所以我的问题是,检查WHICH表单的最佳方法是什么,这是好的做法?

由于

PS还看了隐藏的字段 - >在质量方面看起来并不值得

3 个答案:

答案 0 :(得分:1)

我建议你检查你收到的字段,如果他们没有完全相同的字段或者有一个隐藏的字段告诉你的PHP代码是什么形式,那没有什么不妥。但是,最好的选择是为单独的操作设置单独的URL,无论哪个php文件最终实际处理提交。

要执行此操作,您应该查看urlrewrite和htaccess,这样您就可以将users/deleteusers/add等网址转换为myphpfile.php?action='delete'(意味着保留POST数据)并在您的php代码查看$_GET['action']值以确定要运行的代码。

答案 1 :(得分:1)

最好的方法是为每个提交输入使用不同的名称:

for formOne:

 <input type="submit" name="formOne" value="formOneValue" />

for formTwo:

 <input type="submit" name="formTwo" value="formTwoValue" />

然后在你的php文件中:

 if (!empty($_POST['formOne'])) {
     //do something here;
 }

 if (!empty($_POST['formTwo'])) {
     //do something here;
 }

答案 2 :(得分:1)

在我的CMS中,我有三个以上的提交到同一页面。您只需要查看使用提交按钮名称和值提交的表单。您的请求可以是POST或GET。这是提交到同一页面的两个表单的一个示例。 表单提交按钮名称不同。

 <input type="submit" name="video" id="submit" value="Save">  -- first form 
 <input type="submit" name="album" id="submit" value="Save">  -- second form

 if(isset($_POST['video']) && $_POST['video']=='Save'){
    #code for first form
 }

if(isset($_POST['album']) && $_POST['album']=='Save'){
   #code for second form
}