empty($_POST) === FALSE 不能正常工作

empty($_POST) === FALSE doesn't work as it should

我正在测试 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>

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

为什么??

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

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

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

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

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

if(isset $_POST["text"] && $_POST["text"] !=null)

另外,尝试使用 == 而不是 === == 将转换 $_POST 的值,因此如果它是 NULL,它将被评估为 false 而不是