Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php isset()函数始终返回true_Php_Html_Web_Isset - Fatal编程技术网

Php isset()函数始终返回true

Php isset()函数始终返回true,php,html,web,isset,Php,Html,Web,Isset,我一直在想如何做到这一点,但似乎不起作用 我的表格代码: <form name="register" method="POST" action="php\reg.php"> <label>Email:</label> <input type="email" name="email"/> . . . </form> 问题是,每当我在电子邮件文本框中输入或不输入时,isset函数总是返回真值。如何解

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

我的表格代码:

<form name="register" method="POST" action="php\reg.php">
    <label>Email:</label>
    <input type="email" name="email"/>
    .
    .
    .
</form>
问题是,每当我在电子邮件文本框中输入或不输入时,isset函数总是返回真值。如何解决此问题???


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

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


试试这个-

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

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

$\u POST包含值的空字符串,isset()返回true。使用empty()或add!=''在您的if条件下。请尝试以下操作:

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

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

关于使用
isset()
empty()
检查表单值的所有答案都是。。。糟糕。使用以下选项之一检查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()
函数有一个gotcha,我不建议将其用于表单验证,除非您完全理解它的作用:它为所有falsy值返回true。这意味着
0
被认为是空的,这在某些情况下通常是可接受的值。例如(坏的一个):


如果您提交表单,则是,
$\u POST['email']
将始终设置。它的值是否为空字符串是另一个主题。不要同时使用
isset
empty
,这是毫无意义的。只要
!空的
在这里就可以了。
if (!empty($_POST['email']))
<?php
if (isset($_POST['email']) && !empty($_POST['email'])) {
    echo "success!";
} else {
    echo "empty!";
}
?>
$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");
}
if (empty($_POST["number_of_children"])) {
    // triggers even when user enters 0
    die("number of children field is empty");
}