检查有效的电子邮件,如果它存在

我已经成功地允许用户通过向他们发送具有唯一邀请代码的电子邮件来邀请朋友,

  • 但我试图增加能力来检查它是否是一个有效的电子邮件地址,并且如果该电子邮件已经在另一个表'用户'(相同的数据库)中注册,那么这对于已经注册的用户来说是一件头疼的事情,要接收邀请电子邮件。
  • 我试图检查一个有效的电子邮件,如果它通过写这个脚本存在:

      function email_registered($email) {
      $email = sanitize($email);
      return (mysql_result(mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` =   '$email'"), 0)  ==1) ? true : false;
    }      
    
    
        if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {
            $errors[] = 'A valid email address is required';
        }
        if (email_registered($_POST['email']) === true) {
            $errors[] = 'Sorry, the email '' . $_POST['email'] . '' is already in use';
        }  
    

    这在注册用户时检查电子邮件地址是成功的,但注册帐户与已经注册的帐户在同一个表中。 我不确定如何在邀请代码中使用相同的脚本,因为我试图在注册的单独表中检查电子邮件。

    目前它不检查它是否是有效的电子邮件或它是否存在。

    完整的PHP:

    include 'config.php';
    
    function email_registered($email) {
    $email = sanitize($email);
    return (mysqli_result(mysqli_query("SELECT mysqli_num_rows()(`user_id`) FROM `users` WHERE `email` = '$email'"), 0)  ==1) ? true : false;
    } 
    
    
    if(!empty($_POST)){
    if(!empty($_POST['email'])){
    
        $email = mysqli_real_escape_string($conn,$_POST['email']);         
    
        $length = 10;
        $inviteCode = "";
        $characters = "0123456789abcdefghijklmnopqrstuvwxyz";
    
        for ($p = 0; $p < $length; $p++) {
        $inviteCode .= $characters[mt_rand(10, strlen($characters))];
        }
    
    function email_registered($email)
    {
        if (!empty($email)) {
            $ret_val = false;
    
            $query = sprintf(
                "SELECT id FROM users WHERE email = '%s'",
                mysqli_real_escape_string($email)
            );
    
            $result = mysqli_query($query);
            $num_rows = mysqli_num_rows($result);
            if ($num_rows > 0) {
                //email exists
                ?> 
                <p>User Exists</p>
                <?php 
    
                $ret_val = true;
            } else {
                $query = sprintf(
                    "SELECT id FROM invites WHERE email = '%s'",
                    mysqli_real_escape_string($email)
                );
    
                $result = mysqli_query($query);
                $num_rows = mysqli_num_rows($result);
                if ($num_rows > 0) {
                    //email exists
                    ?>
                    <p>User Exists</p>
                    <?php
    
                    $ret_val = true;
                }
            }
            return $ret_val;
        }
     }
    
    else { 
    
         $query = mysqli_query($conn, "INSERT INTO `referrals` (`email`, `inviteCode`) VALUES   ('$email', '$inviteCode') "); }
         //you might want to consider checking more here such as $query == true as it can return other statuses that you may not want
         if($query){ 
    
      include 'userinvite.php';
    
         ?>
             <p> "Thank you for inviting your friends!"</p>
         <?php 
    
        }
        else{
        ?>
           <p>Sorry there must have been a problem</p>
        <?php
            die('Error querying database. ' . mysqli_error($conn));
        }
    }
    else {
    ?>
        <p>Please enter an email</p>
    <?php
    }
    }
    ?>
    

    我只是试图检查电子邮件是否在'用户'表中注册,并且如果输入的电子邮件是有效的电子邮件。


    我认为你的主要问题是如何检查电子邮件是否存在于另一个表中。 如果这是错误的,让我知道,我可以更新我的答案:P这是一个你应该能够使用的函数的草稿。

    我假设你有这两张表:

    表1:用户

    ||id||email||name||
    

    表2:邀请

    ||id||email||inviter_user_id||
    

    您可以使用此功能来检查电子邮件是否存在于任一表中

    <?php
        /**
         * Check if the given email already exists in the DB
         *
         * @param $email string the email to check
         */
        function email_exists($email)
        {
            if (!empty($email)) {
                $ret_val = false;
    
                $query = sprintf(
                    "SELECT id FROM users WHERE email = '%s'",
                    mysqli_real_escape_string($email)
                );
    
                $result = mysqli_query($query);
                $num_rows = mysqli_num_rows($result);
                if ($num_rows > 0) {
                    //email exists
                    $ret_val = true;
                } else {
                    $query = sprintf(
                        "SELECT id FROM invites WHERE email = '%s'",
                        mysqli_real_escape_string($email)
                    );
    
                    $result = mysqli_query($query);
                    $num_rows = mysqli_num_rows($result);
                    if ($num_rows > 0) {
                        //email exists
                        $ret_val = true;
                    }
                }
                return $ret_val;
            }
        }
    ?>
    
    链接地址: http://www.djcxy.com/p/92813.html

    上一篇: Checking for valid email and if it exists

    下一篇: The Advantages of Email Validation with RegEx