【问题标题】:empty($_POST) === FALSE doesn't work as it shouldempty($_POST) === FALSE 不能正常工作
【发布时间】:2015-09-25 15:51:54
【问题描述】:

我在php中测试了空函数,但是它不起作用,因为if语句无论条件是假还是真都可以访问。

<?php
    if(empty($_POST) === false){

        echo 'text';
}
?>



<form action="index.php"  method="post">
    Username:
    <input type="text" name="text">
    <input type="submit" name="submit">
</form>

即使输入为空,也会执行回显。

为什么?

【问题讨论】:

  • 如果您在此if 声明之前var_dump($_POST),您会看到什么? $_POST 可能不是您期望的那样为空。
  • 即使输入本身为空,仍会发布空值。您的 if 仅在表单下方根本没有输入时才有效。
  • 谢谢大家,我将使用 var_dump($_POST) 因为我以前从未见过它!

标签: php if-statement conditional-statements is-empty


【解决方案1】:

这是因为$_POST 在收到来自 form 的 POST 请求(其中包含 input 值)后永远不会为空。

如果你 var_dump 你的,你会看到:

textarray(2) { ["text"]=> string(0) "" ["submit"]=> string(12) "Submit Query" } 

甚至您的submit input 也被发送(因为它是form 的一部分)。即使没有收到任何东西,$_POST 也会返回一个空集合数组,因此isset 都不是检查 POST 失败或成功的好选择。

您需要评估一个特定字段,例如 $_POST['text'],而不是为空。

【讨论】:

  • 非常感谢,我用它作为我看的教程。这就是为什么我很困惑。谢谢。
  • @AhmadzIssa 如果它帮助您解决问题,请考虑通过单击此答案的投票计数下方的勾选按钮来接受他的答案。欢呼x)
  • 我不得不等待 5 分钟才能做到这一点 ^^。谢谢。
【解决方案2】:
if(isset $_POST["text"] && $_POST["text"] !=null)

另外,请尝试使用 == 而不是 === == 会转换 $_POST 的值,所以如果它是 NULL,它会被评估为 false

【讨论】:

  • 什么是!-=?我以前没见过
  • !-=null?可能想更仔细地看一下。不,不要使用==。这将使0 测试也相等,并且空字符串...两者都是完全有效的表单提交值。
  • 修正了错字,对不起。我建议 == 因为他正在评估 $_POST,而不是 post 变量
猜你喜欢
  • 2012-09-13
  • 2016-11-26
  • 2013-03-01
  • 2012-07-12
  • 1970-01-01
  • 1970-01-01
  • 2013-03-30
  • 2010-11-30
  • 2021-10-02
相关资源
最近更新 更多