1

这是一个快速的问题:像这样的代码

<input type="hidden" name="HDN_FormClicked" value="WasClicked" />

if (strlen($_POST["HDN_FormClicked"]) > 0){
  echo "You have clicked the button";
}

如果每次都检查输入值吗?那么为什么第一次输入不大于0呢?它是一些初始设置吗?

感谢帮助:)。

4

3 回答 3

4

该值只会(并且总是)在您POST的表单时设置,而不是在您第一次加载页面而不提交表单时设置。您可以对其进行一些修改以避免这种混淆

if(isset($_POST))
{
if (strlen($_POST["HDN_FormClicked"]) > 0){
  echo "You have clicked the button";
}
}
else
{
echo "Form was not submitted this time";
}
于 2013-03-13T16:14:55.653 回答
3

不好的解决方案,但您的问题的答案是:因为表单值尚未发送到服务器。所以在第一次发送后,你就会把它填满。通过仅显示输入,不会发送数据。

于 2013-03-13T16:15:03.747 回答
2

Pluto,也许我在这里遗漏了一些东西,或者对表单如何与 PHP 通信可能存在轻微的误解。

PHP 不知道您在页面上显示的表单数据,它只知道它正在输出文本。当您执行表单提交时,PHP 会识别出表单数据已传递给它。

设想我们的页面包含以下代码:

<?php
if($_POST['HDN_FormClicked']) {
  print 'You have clicked the button';
} else {
  print 'Form was not submitted this time';
}
?>
<form method="post">
  <input type="hidden" name="HDN_FormClicked" value="1" />
  <button type="submit">Click</button>
</form>

默认情况下,表单上方的文本会显示“本次未提交表单”。

当您按下“单击”按钮时,表单将发布到脚本,PHP 将检测到表单元素已通过,并打印“您已单击按钮”。

于 2013-03-13T16:35:46.633 回答