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");
}