检查电子邮件是否已存在且FILTER_VALIDATE_EMAIL是否在同一功能中

时间:2018-02-08 22:00:35

标签: php mysql

我试图允许用户在我的PHP系统中编辑他们的电子邮件地址,但也阻止他们设置已经存在的电子邮件地址,我也尝试通过FILTER_VALIDATE_EMAIL运行它们。然而,它停在我的某个地方。检查在相同的功能中工作正常,但如果我尝试设置的检查通过则更新新的检查不起作用。我正在使用HTML表单来更新它们。我以为我做对了,我在这里读到check if email exists in MySQL database应该可以这样做。

这是我的代码,是否有人看到我做错了什么?我在哪里错过了?

   container matches {

        choice l2 {
          container eth {
            when "derived-from(../../../../type, " +
                 "'acl:eth-acl-type')";
            if-feature match-on-eth;
            uses pf:acl-eth-header-fields;
            description
              "Rule set that matches ethernet headers.";
          }
          description
            "Match layer 2 headers, for example ethernet
             header fields.";
        }

       .....

1 个答案:

答案 0 :(得分:2)

您的更新查询看起来像是在错误的位置。根据您的代码,如果未设置发布的电子邮件值,则表示您正在更新数据库。我猜这不是你想要做的。我看到的另一个问题是你只是将$ sql变量传递给函数。发布的值永远不会被设置。

//initalize flags
$flag1 = "no";
$flag2 = "no";
if( isset($_POST['email'])){
     if(!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
         echo "Invalid e-mail, please try a different.";
         exit;
    }else{
         //use flag here for for last if
         $flag1 = "yes";
    }
    $check_email = $sql->query("SELECT email FROM auth WHERE email='$newemail'");
    if ($check_email-> num_rows) {
        echo "E-mail is already in use.";
        exit;
    }else{
         //set 2nd flag here
         $flag2 = "yes";
    }

    if( $flag1 == "yes" && $flag2 == "yes"){
        //update query for new email here
    }
}else{
     //do something when no email is posted
}