所以我一直在考虑这个问题一小时,并且对检查哪个表单提交的最佳方法感兴趣。
让我们说我们已经formOne
和formTwo
提交到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还看了隐藏的字段 - >在质量方面看起来并不值得答案 0 :(得分:1)
我建议你检查你收到的字段,如果他们没有完全相同的字段或者有一个隐藏的字段告诉你的PHP代码是什么形式,那没有什么不妥。但是,最好的选择是为单独的操作设置单独的URL,无论哪个php文件最终实际处理提交。
要执行此操作,您应该查看urlrewrite和htaccess,这样您就可以将users/delete
和users/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
}