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


Best way to check which form has been submitted PHP

所以我已经考虑了一个小时,我对检查提交的表单的最佳方式很感兴趣。

假设我们有formOneformTwo,它们都提交给formsubmission.php,在里面我认为检查提交的最合适的方法是

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

但是,真正确定提交了哪种表格的最佳方法是什么,表格一或表格二?

我在这里读过。确定提交了哪一份表格的最佳方法是什么?我想知道这是否是解决这一问题的唯一两种方法。

由于我在其他地方读到的一些原因,我认为仅仅检查isset($_POST[formname])是不好的,但现在我开始认为,发布到同一个.php文件的整个想法只是不好的做法,没有好的方法来检查以这种方式提交的表格。

使用GET并将每个不同的表单提交给一个单独的ID是不是一种糟糕的做法?如果是,为什么?

所以我的问题是,检查哪张表格已经提交的最好方法是什么,这就是好的做法?

感谢

PS还研究了隐藏字段->在质量方面似乎不值得html使用

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

对于formOne:

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

对于形式二:

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

然后在你的php文件:

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

我建议您检查收到的字段,如果它们没有完全相同的字段,或者有一个隐藏字段,可以告诉您的php代码它是哪种形式,这没有错。然而,最好的选择是为单独的操作提供单独的url,而不管最终哪个php文件实际处理提交。

要做到这一点,您应该研究urlrewrite和htaccess,这将允许您将像users/deleteusers/add这样的url转换为myphpfile.php?action='delete'(意味着POST数据被保留),并在php代码中查看$_GET['action']值来决定运行哪个代码。

在我的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
}