filter_validate_email 不起作用甚至被检测到?

Rob*_*015 1 php forms validation

我已经尝试了此处查询的所有其他答案,但没有一个适合我的需求。我使用的是 PHP 5.2,我开始认为这个过滤器可能不适用于我的版本?我在下面添加了代码,如果您看到任何内容请告诉我。我已经尝试过使用和不使用清理,每次它都会跳过整个子句并将表单提交到数据库。

if(isset($_POST['fname']) && !empty($_POST['fname']) AND isset($_POST['lname']) && !empty($_POST['lname']) AND isset($_POST['college']) && !empty($_POST['college']) AND isset($_POST['address']) && !empty($_POST['address']) AND isset($_POST['username']) && !empty($_POST['username']) AND isset($_POST['password']) && !empty($_POST['password']) AND $passwordEmail == $password2){

$address = $_POST['address'];

$address = filter_var($address, FILTER_SANITIZE_EMAIL);

 if(!filter_var($address, FILTER_VALIDATE_EMAIL) === false) {
header("location: registration.php?remarks=successEmail&college=$college&fname=$fname&lname=$lname&contact=$contact&username=$username");
}

else{
header("location: registration.php?remarks=failedEmail&college=$college&fname=$fname&lname=$lname&contact=$contact&username=$username");
}
Run Code Online (Sandbox Code Playgroud)

编辑:

我删除了重复的功能,但!它仍然不起作用。

唯一的补充是移动了“!” 并拆除第一个过滤器。

这是我现在使用的代码,它仍然失败,并取自给出的一些答案:

if(isset($_POST['fname']) && !empty($_POST['fname']) AND isset($_POST['lname']) && !empty($_POST['lname']) AND isset($_POST['college']) && !empty($_POST['college']) AND isset($_POST['address']) && !empty($_POST['address']) AND isset($_POST['username']) && !empty($_POST['username']) AND isset($_POST['password']) && !empty($_POST['password']) AND $passwordEmail == $password2){

$address = $_POST['address'];

 if(filter_var($address, FILTER_VALIDATE_EMAIL) != false) {
header("location: registration.php?remarks=successEmail&college=$college&fname=$fname&lname=$lname&contact=$contact&username=$username");
}

else{
header("location: registration.php?remarks=failedEmail&college=$college&fname=$fname&lname=$lname&contact=$contact&username=$username");
}
Run Code Online (Sandbox Code Playgroud)

最终编辑:我复制了我找到​​的这个示例,只是更改了变量名称,现在它可以工作了。

<?php
$email = "john.doe@example.com";

if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
  echo("$email is a valid email address");
} else {
  echo("$email is not a valid email address");
}
?> 
Run Code Online (Sandbox Code Playgroud)

Joh*_*nde 5

你的!位置不对。

if(filter_var($address, FILTER_VALIDATE_EMAIL) !== false) {
Run Code Online (Sandbox Code Playgroud)

通过将其放在函数名称之前,您可以说“如果 filter_var() 返回值的相反值等于 false 并且类型相同”。这给了你true === false这当然是错误的。

你真正的意思是“如果filter_var()的返回值等于false并且类型相同”。这给了你true !== false这当然是真的。

或者简化一下:

if(filter_var($address, FILTER_VALIDATE_EMAIL)) {
Run Code Online (Sandbox Code Playgroud)