我有一个带有表单的页面。以下哪种方法最好用于检查表单是否已提交?它们有何不同?
方法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 :(得分: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))