isset()函数始终返回true

时间:2014-09-12 10:49:17

标签: php html web isset

我一直在想如何做到这一点,但似乎没有起作用。

我的表格代码:

<form name="register" method="POST" action="php\reg.php">
    <label>Email:</label>
    <input type="email" name="email"/>
    .
    .
    .
</form>

“reg.php”文件的代码:

if (isset($_POST['email'])) {
    echo "success!";
} else {
    echo "empty!";
}
?>

问题是,每当我输入或不输入电子邮件文本框时,isset函数始终返回true值。我怎么解决这个问题?

7 个答案:

答案 0 :(得分:4)

有关使用isset()empty()检查表单值的所有答案都很糟糕。使用filter functions之一检查POST / GET / COOKIE变量是否存在并验证或消毒它。这是一个例子:

$email = filter_input(INPUT_POST, "email", FILTER_VALIDATE_EMAIL);
if ($email === NULL) {
    die("Email field not present in form");
} elseif ($email === FALSE) {
    die("Email is present but its value is invalid");
}

注意:empty()函数有一个问题,我不建议将它用于表单验证,除非你完全理解它的作用:它对所有 falsy 值返回true。这意味着0被视为为空,在某些情况下通常是可接受的值。示例(坏的):

if (empty($_POST["number_of_children"])) {
    // triggers even when user enters 0
    die("number of children field is empty");
}

答案 1 :(得分:3)

isset()检查值是否已设置,因此即使值为空字符串也是如此。使用empty()

if (empty($_POST['email']) == false) {
  echo "success!";
}else{
  echo "empty!";
}

答案 2 :(得分:3)

<?php
if (!empty($_POST['email'])) {
echo "success!";
}else{
echo "empty!";
}
?>

答案 3 :(得分:0)

试试这个 -

<?php
if (!empty($_POST['email'])) {
  echo "success!";
}else{
  echo "empty!";
}
?>

答案 4 :(得分:0)

如果声明变量,仍会设置空字符串和/或空字符串。

$ _ POST包含值的空字符串,isset()返回true。使用empty()或添加!=&#39;&#39;在你的if condition.try中:

if (!empty($_POST['email']))

答案 5 :(得分:0)

尝试使用empty()函数检查$ _POST数组的电子邮件字段中是否有任何内容。 基于您的代码的示例代码如下:

<?php
if (isset($_POST['email']) && !empty($_POST['email'])) {
    echo "success!";
} else {
    echo "empty!";
}
?>

答案 6 :(得分:-1)

 <?php
 if (isset($_POST['email']) && $_POST['email'] != "") {
 echo "success!";
 }else{
 echo "empty!";
 }
 ?>

试试这种方式