检查用户是不是提交表单的正确方法
Posted
技术标签:
【中文标题】检查用户是不是提交表单的正确方法【英文标题】:Right method to check if user submitted a form检查用户是否提交表单的正确方法 【发布时间】:2014-06-13 18:51:40 【问题描述】:我有一个带有表单的页面。以下哪种方法最适合用于检查表单是否已提交?它们有何不同?
方法一:
if($_SERVER['REQUEST_METHOD'] == 'POST')
//some code
方法二:
if(isset($_POST['submit']))
//some code
方法3(显然,如果我在提交到查询字符串时添加submitted=true
):
if($_GET['submitted'] == true)
//some code
【问题讨论】:
$_GET[]
将所有提交的信息提供给 url。 $_POST[]
为您提供所有提交的信息,而不显示在 url 中。 $_REQUEST
处理 GET
和 POST
Checking if form has been submitted - php 的可能重复项
与Jquery无关...我使用方法2。如果FORM通过POST提交。
【参考方案1】:
如果您尝试发布表单,那么您应该始终使用适当的 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】:一般情况下,如果 POST 操作则只需使用
if (!empty($_POST))
【讨论】:
【参考方案3】:方法一和方法二是最合适的。
如果您使用$_GET['submitted'] == true
验证表单,最终用户很容易破解此表单,从而造成安全漏洞。
我认为最好的方法是第一个
if($_SERVER['REQUEST_METHOD'] == 'POST')
即使在您不必检查 post 变量的动态生成表单上,这段代码也能很好地工作。
【讨论】:
以上是关于检查用户是不是提交表单的正确方法的主要内容,如果未能解决你的问题,请参考以下文章