2014-04-28 87 views
1

我有一个带有表单的页面。以下哪种方法最适合用来检查表单是否被提交?它们有什么不同?检查用户是否提交表单的正确方法

方法1:

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

方法2:

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

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

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

'$ _GET []'给你所有提交的信息到url中。 '$ _POST []'为您提供所有提交的信息,不会在url中显示。 '$ _REQUEST'处理'GET'和'POST' –

+1

[检查表单是否已被提交 - PHP]可能的重复(http://stackoverflow.com/questions/7711466/checking-if-form-has-been- submit-php) –

+0

与Jquery无关......我使用方法2.如果FORM通过POST提交。 – reyaner

回答

6

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

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

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

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

这段代码工作良好,即使在动态生成的形式,其中,你不必检查后变量。

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

0

一般来说如果POST操作然后只需使用

if (!empty($_POST)) 
相关问题