所以我已经考虑了一个小时,我对检查提交的表单的最佳方式很感兴趣。
假设我们有formOne
和formTwo
,它们都提交给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/delete
和users/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
}