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)
更好的方法是你需要存储消息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)