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

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 处理 GETPOST 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 变量的动态生成表单上,这段代码也能很好地工作。

【讨论】:

以上是关于检查用户是不是提交表单的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

检查用户是不是更改了连续子表单记录集的最简单方法?

单击登录后如何重定向到下一页并检查用户凭据是不是正确

如何检查页面重新加载是不是完成

VBA验证文本框中是不是存在文本,然后检查日期是不是格式正确

检查表单输入是不是存在 [Django]

如何进行表单验证