【问题标题】:FILTER_VALIDATE_EMAIL not workingFILTER_VALIDATE_EMAIL 不工作
【发布时间】:2012-07-20 20:07:56
【问题描述】:

我肯定在这里遗漏了一些东西。由于某种原因 filter_var 不起作用。我正在尝试验证来自 $_POST 的电子邮件,即使电子邮件有效,它也会返回 false。但是,当我对电子邮件进行硬编码时,它可以正常工作。怎么了?

这是我的 php 代码:

function redirect() { //redirecting to home page function. Used in one of the lectures.
    $host = $_SERVER["HTTP_HOST"]; 
    $path = rtrim(dirname($_SERVER["PHP_SELF"]), "/\\");
    header("Location: http://$host$path/index.php");
    exit;
}

try 
{
    $dbh = new PDO($db, $dbuser, $dbpassword);
}
catch (PDOException $e) 
{
    echo "Connection failure: " . $e->getmessage();
}

if (!isset($_POST['email']) || !isset($_POST['password1']) || !isset($_POST['password2'])) {
    redirect();
}

$password1 = htmlspecialchars($_POST['password1']);
$email = htmlspecialchars($_POST['email']);
$password2 = htmlspecialchars($_POST['password2']);
//preg_match('/.+@.+\./', $email) == FALSE



if ($email = "") {
    print "email not there";

} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    print "not real email";

} elseif (strlen($password1) < 6) {
    print("password too small");

}  elseif (!(preg_match('/[A-Za-z].*[0-9]|[0-9].*[A-Za-z]/', $password1))) {
    print "numbers and letters plz";

} elseif ($password1 != $password2) {
    print "passwords not same";
    //redirect();
}

【问题讨论】:

  • 没有htmlspecialchars() 是否可以工作?

标签: php validation email-validation filter-var


【解决方案1】:

更改第一封电子邮件支票:

if ($email == "") {
    print "email not there";
}

它正在获取值 " 而不是检查它。

【讨论】:

  • 天啊!我真的觉得很笨。非常感谢。 Tho,为什么没有抛出任何错误?
  • @undacovabroda45 你不应该像if(empty($email))那样做空检查
  • @undacovabroda45 这不是错误。您正在向$email 中插入一个值。
猜你喜欢
  • 2014-01-05
  • 2013-10-13
  • 2012-03-12
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 2012-11-09
  • 2015-11-17
  • 2013-08-11
相关资源
最近更新 更多