Php 关于isset的简单Q($\u POST['submit']))

Php 关于isset的简单Q($\u POST['submit'])),php,forms,if-statement,submit,isset,Php,Forms,If Statement,Submit,Isset,如果我错了,请纠正我,但我相信如果用户使用enter键提交表单,上述代码将不起作用 这是真的吗?如果是这样,我是否可以使用另一个If语句来代替此语句来覆盖使用提交按钮和按enter键的用户?如果提交是默认的提交按钮,则这不是真的 另外,还有一个$\u服务器['REQUEST\u METHOD']——我想在您提交表单时它会被发布,或者如果我理解您的意图正确的话,它会被发布。如果您不确定提交是否会被发布,您可以使用overkill方法:使用一些唯一的名称创建隐藏在其中,并验证它是否在发布数据中: i

如果我错了,请纠正我,但我相信如果用户使用enter键提交表单,上述代码将不起作用

这是真的吗?如果是这样,我是否可以使用另一个If语句来代替此语句来覆盖使用提交按钮和按enter键的用户?

如果提交是默认的提交按钮,则这不是真的

另外,还有一个$\u服务器['REQUEST\u METHOD']——我想在您提交表单时它会被发布,或者如果我理解您的意图正确的话,它会被发布。

如果您不确定提交是否会被发布,您可以使用overkill方法:使用一些唯一的名称创建隐藏在其中,并验证它是否在发布数据中:

if(isset($_POST['submit'])){
//code here
}

要检查表单是否已发布到服务器,请使用:

if (isset($_POST['some_name']) && $_POST['some_name'] == "OK") {
    // ...
}

我将在其他答案上展开讨论:如果submit是input type=submit,并且回车键触发该按钮,则可能不是真的。如果type=img或a,则其行为可能与enter键不同,并且可能未设置该_POST值。

如果提交按钮是页面上唯一的提交按钮,或者是页面上的第一个提交按钮(如果有多个),则提交应该是正常的,这可能不太可能

另一种方法是使用隐藏输入

e、 g


考虑到这个问题,这很可能是矫枉过正。这是一个完全可以接受的矫枉过正的答案。如果详细说明你的意思是为你做这件事,那么检查一下你提交的秘密。检查是否是邮寄请求,嗯,检查是否是邮寄请求。这比检查隐藏的输入、希望按钮名为submit、向外看等要好。是的,除非目的是区分不同的submit按钮。不同的表单,我的意思是。@MichaelKrelin hacker:然后你仍然首先检查帖子,然后检查特定的提交按钮值。@MarcB,好吧,你仍然打开我的意思是,如果问题是区分不同的表单。id肯定是一个过多的问题,它可能在某个地方被复制;也许,很多人喜欢在他们的输入上有与名称匹配的ID,并且它为使用jQuery等提供了一个简单的选择器。尽管如此,它绝对没有坏处!如果出现重复,则会造成伤害。一般来说,我不会说id在这里特别有害,但它肯定不会以任何方式处理这个问题-我认为,一些IE版本没有检测到提交时输入键
if (isset($_POST['some_name']) && $_POST['some_name'] == "OK") {
    // ...
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // …
}
<input type="hidden" id="processed" name="processed" value="1" />
if(isset($_POST['processed'])){
    //code here
}