我已经在这里尝试了我的查询的所有其他答案,但没有一个能满足我的需求。我在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");
}
修改
我删除了重复的功能和!
,但仍然无效。
唯一的补充就是移动了'!'并删除第一个过滤器。
这是我现在使用的代码,它仍然失败并取自给出的一些答案:
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");
}
最终编辑:我复制了我发现的这个例子,只是更改了变量名称,现在它可以正常工作。
<?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");
}
?>
答案 0 :(得分:4)
您的!
位置错误。
if(filter_var($address, FILTER_VALIDATE_EMAIL) !== false) {
通过将它放在函数名之前,如果filter_var()的返回值与false相同且相同,则表示“”。这会给你true === false
当然是假的。
你的意思是“如果filter_var()的返回值等于false且类型”。这给了你true !== false
,这当然是真的。
或简化它:
if(filter_var($address, FILTER_VALIDATE_EMAIL)) {
答案 1 :(得分:1)
您正在使用filter_var TWICE 这就是为什么它总是会失败
Set<Integer> bSet = new HashSet<Integer>();
for (int n : B) {
bSet.add(n);
}
for (int n : A) {
if (bSet.contains(n)) {
return n;
}
}
// If you get here, arrays have no elements in common
变量if(!filter_var($address, FILTER_VALIDATE_EMAIL) === false) {
已被修改为之前行中的布尔值:
$address
$address = filter_var($address, FILTER_SANITIZE_EMAIL);
包含$address
或false
值,而不是电子邮件字符串!
哦,当然,就像John Conde说的那样,你在错误的地方使用了true
。
答案 2 :(得分:0)
我遇到了同样的问题。我发现else
低于}
。当我在}
验证工作后面移动它时。
错误的代码:
if(filter_var($em, FILTER_VALIDATE_EMAIL)){
$em = filter_var($em, FILTER_VALIDATE_EMAIL);
}
else{
echo "Invalid email format";
}
工作代码:
if(filter_var($em, FILTER_VALIDATE_EMAIL)){
$em = filter_var($em, FILTER_VALIDATE_EMAIL);
//Check if email already exists
}else{
echo "Invalid email format";
}