测试PHP POST空值-意外结果-我缺少什么?

时间:2018-06-22 19:33:17

标签: php

我正在按照教程进行操作,但是如果单击提交按钮时未在名称字段中填写任何值,我将得到一个不正确的TRUE结果。 第一个测试按预期方式工作,但是第二个和第三个测试在应返回FALSE时保持返回TRUE(将输入留空)。

我缺少什么,不了解或做错了什么?这应该很简单。 任何帮助或建议,表示赞赏。

这是非常简单的脚本:

<?php
//This one works correctly
if(!empty($_POST['name'])) {
    echo "There is input here <br>";
} else {
    echo "You have not input any info yet. <br>";
}

//This returns true even if I leave the field empty
if(isset($_POST['name'])) {
    echo "A name has been input <br>";
} else {
    echo "You have not input your name yet. <br>";
}
//This returns true also when it shouldn't
if(filter_has_var(INPUT_POST, 'name')) {
    echo $_POST['name'] . ' <- Name Input!<br>';
} else {
    echo 'No Name Input.';
}

?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    <p><label for="name">Name:</label> <input type="text" name="name" 
id="name" size="30" value=""></p>
    <p><input type="submit" value="SEND"></p>
</form>

2 个答案:

答案 0 :(得分:1)

empty执行所说的操作,检查是否为空(如果还不存在,则为空)

isset检查变量是否存在,是否已设置

filter_has_var与isset几乎相同

在文件顶部放置一个print_r($_POST),您将会了解:)

答案 1 :(得分:0)

您需要检查该值以查看其是否为空:

if(isset($_POST['name']) && !empty($_POST['name'])) {

http://php.net/manual/en/function.empty.php