关于isset的简单问题($ _ POST ['submit'])

时间:2012-10-05 16:19:07

标签: php forms if-statement submit isset

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

如果我错了,请纠正我,但我相信如果用户使用“回车”键提交表单,上面的代码将无效。

这是真的吗?如果是这样,是否有另一个if语句我可以使用而不是用来覆盖用户使用提交按钮并按回车键?

5 个答案:

答案 0 :(得分:7)

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

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

答案 1 :(得分:4)

如果您不确定submit是否在POST中,您可以使用overkill方法:在此<input>中使用一些唯一名称创建隐藏<form>并验证它是否在POST数据中:

<input type="hidden" name="some_name" value="OK" />

在PHP代码中:

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

答案 2 :(得分:3)

如果submit是默认提交按钮,则不是这样。

此外,还有$_SERVER['REQUEST_METHOD'] - 我认为当您提交表单时会POSTGET,否则,如果我理解您的意图是正确的。

答案 3 :(得分:1)

我将扩展其他答案:如果submitinput type=submit且输入键触发该按钮,则可能不是这样。如果是type=img<button>,则输入键的行为可能会有所不同(并且可能不会设置_POST值。

答案 4 :(得分:0)

如果提交是页面上的唯一提交按钮或页面上的第一个提交按钮,则提交应该没有问题,这可能不太可能。

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

e.g。

<input type="hidden" id="processed" name="processed" value="1" />

然后在你的提交脚本中

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