如果数据库中已存在电子邮件,则停止注册

LPB*_*LPB 0 php sql redirect registration

我正在练习PHP和SQL.我有一个注册表单,如果他们的电子邮件已经注册,我想阻止用户在我的网站上注册.我的代码没有这样做,我仍然看不到我的错误.有谁可以帮助我吗?这是我的php文件.

$sql_user_name = "root";  //PHPMYADMIN INFORMATIONS
$sql_password = "";
$sql_database = "registeredusers";
$sql_table = "registeredusers";
$server = "127.0.0.1";

$db_handle = mysqli_connect($server, $sql_user_name, $sql_password);  //CONNECTION TO DATABASE
$db_found = mysqli_select_db($db_handle,$sql_database);  //OPENING TABLE

$email_exists = mysqli_query("SELECT * FROM $sql_table WHERE email = '$email'");

if ($db_found && mysqli_num_rows($email_exists) > 0) {
    header('Location: index.php');
    echo "Email is already registered.";
    mysqli_close($db_handle);
}
else if ($db_found) {  //WRITES INTO DATABASE IF TABLE HAS SUCCESSFULLY BEEN OPENED AND EMAIL ISN'T IN USE
        $SQL = mysqli_query($db_handle,"INSERT INTO registeredusers (name, email, password, gender, birthday)
        VALUES ('$name', '$email', '$password', '$gender', '$birthday')");

        $to = "$email";
        $subject = "Welcome to Sketchule";
        $message = "Hello! Welcome to Sketchule!";
        $from = "lpb.baillargeon@gmail.com";
        $headers = "From: $from";
        mail($to,$subject,$message,$headers);
        mysqli_close($db_handle);
        header('Location: confirmation.php');
    }
else {  //FINISHED CONNECTION IF OPERATION UNSUCCESSFUL
    mysqli_close($db_handle);
}
Run Code Online (Sandbox Code Playgroud)

更新:

它永远不会进入脚本的这一部分:

    if ($db_found && mysqli_num_rows($email_exists) > 0) {
    $_SESSION['registered'];
    mysqli_close($db_handle);
    header('Location: index.php');
    exit();
}
Run Code Online (Sandbox Code Playgroud)

它永远不会将我重定向到index.php,它仍然会发送一封电子邮件.

更新:这就是我开始工作的方式.

$query = "SELECT * FROM registeredusers WHERE email = '$email'";
$result = mysqli_query($db_handle, $query) or die (mysqli_error($db_handle));

if (mysqli_num_rows($result) > 0) {
    session_start();
    $_SESSION['registered'] = "Email is already registered.";
    mysqli_close($db_handle);
    header('Location: index.php');
    exit();
}
else {  //WRITES INTO DATABASE IF TABLE HAS SUCCESSFULLY BEEN OPENED AND EMAIL ISN'T IN USE
        $SQL = mysqli_query($db_handle,"INSERT INTO registeredusers (name, email, password, gender, birthday)
        VALUES ('$name', '$email', '$password', '$gender', '$birthday')");

        $to = "$email";
        $subject = "Welcome to Sketchule";
        $message = "Hello! Welcome to Sketchule!";
        $from = "lpb.baillargeon@gmail.com";
        $headers = "From: $from";
        mail($to,$subject,$message,$headers);
        mysqli_close($db_handle);
        header('Location: confirmation.php');
        exit();
    }
Run Code Online (Sandbox Code Playgroud)

Sum*_*ani 5

更好的方法是你需要存储消息SESSION然后在重定向的页面上回显它,也必须exit()header()... 后使用

if (mysqli_num_rows($email_exists) > 0) {
    $_SESSION['msg'] = "Email is already registered.";
    http_redirect('index.php', [], TRUE);
}
Run Code Online (Sandbox Code Playgroud)

然后在index.php上

echo $_SESSION['msg'];
Run Code Online (Sandbox Code Playgroud)