2014-09-13 39 views
1

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

因此,可以说我们已经有了formOneformTwo双方提交formsubmission.php里边有我所认为最合适的方式来检查提交的是

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

但是,什么是最好的方式实际确定哪种形式已提交,formOne或Two?

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

我计算过,只是检查isset($_POST[formname])会很糟糕,由于我读其他地方有几个原因,但现在我开始认为张贴到同一.php文件的整体思路就是不好的做法并没有什么好以这种方式检查提交表单的方式。

正在使用GET并将每种不同的表单提交给单独的ID不良练习?如果是这样 - 为什么?

所以我的问题是,什么是最好的方式来检查哪些形式已被提交,这是很好的做法?

感谢

PS也看着隐藏字段 - >似乎并不值得HTML在质量方面

+0

如果您使用RESTful方式创建网站,那么您不必担心提交哪种表单的位置。 [阅读更多关于REST的信息](http:// stackoverflow。com/questions/671118/what-exactly-is-restful-programming) – Dan 2014-09-13 13:02:40

回答

1

我建议你检查你收到的场,如果他们不具备完全相同的字段或有一个隐藏的字段告诉你的PHP代码是什么形式,这没有什么不对。然而,最好的选择是为单独的动作设置单独的url,而不管哪个php文件最终处理提交。

要做到这一点,你应该看看urlrewrite和htaccess的,这将让你把一个url像users/deleteusers/addmyphpfile.php?action='delete'(意为POST数据将被保留),并在你的PHP代码看看$_GET['action']值来决定哪些代码跑步。

+0

这是目前我一直在做的事 – Jim 2014-09-13 13:17:23

1

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

对于formOne:

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

对于formTwo:

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

然后在你的PHP文件:

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

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

为什么这是“最好的”? – Dan 2014-09-13 13:11:54

+0

@丹没有必要添加额外的html代码,这是最简单的 – Isaac 2014-09-13 13:15:39

+0

这几乎与使用isset相同 - 显然这是不好的? – Jim 2014-09-13 13:17:04

0

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