筛选\验证\电子邮件在PHP中不起作用
如果这是一个重复的问题,我道歉。我已经阅读了100篇文章,并试图实施我发现的每一个修复方案,但都无济于事 我正在传递一个名为email\u tocheck的变量。我只是想确保该电子邮件不在数据库中&&它是一封“有效”的电子邮件 无论我做什么,我都不能满足有效电子邮件的要求。如果我只是简单地输入'myemail@mydomain.com'在第一个筛选\验证\电子邮件在PHP中不起作用,php,email,Php,Email,如果这是一个重复的问题,我道歉。我已经阅读了100篇文章,并试图实施我发现的每一个修复方案,但都无济于事 我正在传递一个名为email\u tocheck的变量。我只是想确保该电子邮件不在数据库中&&它是一封“有效”的电子邮件 无论我做什么,我都不能满足有效电子邮件的要求。如果我只是简单地输入'myemail@mydomain.com'在第一个IF语句中,用单引号而不是$email,电子邮件返回为未定义。我卡住了。重要时刻 我犯了愚蠢的语法错误吗?我喜欢很多人,但我是新来的。任何想法都将不胜感激
IF语句
中,用单引号而不是$email
,电子邮件返回为未定义。我卡住了。重要时刻
我犯了愚蠢的语法错误吗?我喜欢很多人,但我是新来的。任何想法都将不胜感激
$url=$_SERVER['QUERY_STRING'];
parse_str($url);
$email = "'$email_tocheck'";
$sql = "SELECT * from EmailList where Email=$email";
$conn->query($sql);
$result = $conn->query($sql);
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
if((mysqli_num_rows($result)>0)){
$num1 = 'Not Valid';
$num2 = 'This email has been unsubscribed.';
echo json_encode(array($num1, $num2));
} else {
$num1 = 'Valid';
$num2 = 'Send away';
echo json_encode(array($num1, $num2));
}
} else {
$num1 = 'Not Valid';
$num2 = 'A valid email is required.';
echo json_encode(array($num1, $num2,$email));
}
这意味着$email
是'foo@bar.com“
(不是有效的电子邮件地址),而它应该是foo@bar.com
(不带引号)。将行更改为:
$email = $email_tocheck;
或根据需要进行消毒,例如空白:
$email = trim($email_tocheck);
问题是这里的电子邮件必须在引号中
email='$email'"; 代码>您不应该在变量周围加引号,只有在sql中,并且只有在正确转义了值的情况下才能加引号。最好完全去掉引号,使用一个准备好的语句。我已经完全删除了引号,但是SQL语句无法运行。我尝试了所有可能的引用和非引用版本。我想你说的是,我需要两个版本的$email-一个用于SQL语句,另一个用于filter_var。我将阅读准备好的语句。已解决。投票支持萨蒂。解决方案实际上是两个版本的$email。谢谢大家……但出于好奇,为什么对我的问题投反对票呢?一个非空字符串-一个有效的电子邮件地址-将计算为true
,这样OP的部分代码就可以正常工作。事实上,问题2不是问题。。它非常有效。。您应该将其从列表中删除answer@jeroen这是一个很好的观点,我这样做是不切实际的,因为你不能确定filter\u var
的输出,除非它是false
。我已删除它。@MateiMihai已完成。请注意,现在sql将失败:-)
$email = trim($email_tocheck);