检查表单是否已提交 - PHP

Ano*_*ous 122 php forms validation

检查表单是否已提交以确定是否应将表单的变量传递给验证类的最佳方法是什么?

首先我想的可能是:

isset($_POST)
Run Code Online (Sandbox Code Playgroud)

但随着超级全球在各地被定义,这将永远回归真实.我不想通过以下方式遍历表单的每个元素:

if(isset($_POST['element1']) || isset($_POST['element2']) || isset(...etc
Run Code Online (Sandbox Code Playgroud)

在写这个问题时,我想到了一个更基本的解决方案,添加一个隐藏的字段作为我可以检查的标志.

除了添加自己的旗帜之外,还有一种"更清洁"的方式吗?

mat*_*ino 183

一般检查是否有POST动作使用:

if (!empty($_POST))
Run Code Online (Sandbox Code Playgroud)

编辑:如评论中所述,此方法在某些情况下不起作用(例如,使用复选框和没有名称的按钮).你真的应该使用:

if ($_SERVER['REQUEST_METHOD'] == 'POST')
Run Code Online (Sandbox Code Playgroud)

  • 忘了空功能.我认为这是最直接的做法,尽管我也很欣赏其他答案!他们都会工作. (4认同)

Ola*_*laf 167

怎么样

if($_SERVER['REQUEST_METHOD'] == 'POST')
Run Code Online (Sandbox Code Playgroud)

  • +1 - 至少检查请求方法,应该这样做. (4认同)

Tzs*_*and 68

实际上,提交按钮已经执行此功能.

试试FORM:

<form method="post">
<input type="submit" name="treasure" value="go!">
</form>
Run Code Online (Sandbox Code Playgroud)

然后在PHP处理程序中:

if (isset($_POST['treasure'])){
echo "treasure will be set if the form has been submitted (to TRUE, I believe)";
}
Run Code Online (Sandbox Code Playgroud)

  • 这是正确的答案.简单地检查$ _POST是不够好的,因为它可能是从许多不同的地方生成的......而不仅仅是来自表格帖子.谢谢Tzshand. (6认同)
  • POST 可以用 Ajax 完成,它没有任何提交按钮,所以这不是一个通用的解决方案。 (2认同)

Rik*_*esh 32

使用

if(isset($_POST['submit'])) // name of your submit button
Run Code Online (Sandbox Code Playgroud)

  • 最简单的解决方案。所有表单都应该有一个提交按钮! (2认同)
  • @rilwis有时表单是由JavaScript提交的,不需要/没有提交按钮 (2认同)

Cod*_*ter 29

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


riz*_*zon 13

试试这个

 <form action="" method="POST" id="formaddtask">
      Add Task: <input type="text"name="newtaskname" />
      <input type="submit" value="Submit"/>
 </form>

    //Check if the form is submitted
    if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['newtaskname'])){

    }
Run Code Online (Sandbox Code Playgroud)

  • 这种方法是最值得推荐的,因为它似乎被“编码学院”认可为“最佳实践”。 (2认同)