检查用户是否提交表单的正确方法

时间:2014-04-28 09:33:39

标签: php forms post get form-submit

我有一个带有表单的页面。以下哪种方法最好用于检查表单是否已提交?它们有何不同?

方法1:

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

方法2:

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

方法3(显然,如果我在提交查询字符​​串时添加submitted=true):

if($_GET['submitted'] == true){
    //some code
}

3 个答案:

答案 0 :(得分:6)

方法1和方法2是最合适的方法。

如果您使用$_GET['submitted'] == true验证表单,最终用户很容易破解这会导致安全漏洞。

我认为最好的方法是第一个

if($_SERVER['REQUEST_METHOD'] == 'POST')

这段代码即使在动态生成的表单上也能很好地工作,而不必检查post变量。

答案 1 :(得分:0)

如果您尝试发布表单,则应始终使用相应的HTTP请求POST。此外,在大多数情况下,明确检查已发布的密钥可能是有意义的,因为您的页面上可能有多个表单。这是你的方法的细分。第二种方法似乎是最好的。:


if($_SERVER['REQUEST_METHOD'] == 'POST')

检查请求方法是否为POST类型。不检查任何特定类型的数据。

if(isset($_POST['submit']))

检查密钥submit是否已发布到服务器。

if($_GET['submitted'] == true)

检查假定设置的 get参数 submitted是否等于true


有关详情,请参阅the difference between GET and POST。特别是在发布表单时,您应该了解cross-site request forgery

答案 2 :(得分:0)

一般来说,如果是POST动作,那么只需使用

if (!empty($_POST))