我一直在想如何做到这一点,但似乎没有起作用。
我的表格代码:
<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值。我怎么解决这个问题?
答案 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!";
}
?>
试试这种方式