Код системы участника всегда перенаправляет меня на «адрес электронной почты уже зарегистрированной страницы»
Вот код, который я использую при обработке, чтобы проверить, будет ли электронная почта, то есть имя пользователя,
уже был взят или нет
пожалуйста помоги!!!!
<?php
$db_host = "localhost";
$db_user = "ms_admin";
$db_pass = "secretpassword";
$db_name = "member_system";
$connection = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
if(mysqli_connect_errno())
die("Databse connection failed." . mysqli_connect_error()
. " (" . mysqli_connect_errno() . ")" );
?>
<?php
function check_email($e_mail)
{
$query = "SELECT email FROM members ";
$query .= "WHERE email='$e_mail'";
$result = mysqli_query($connection, $query);
$num_rows = mysqli_num_rows($result);
if($num_rows>0) header("Location: registration_successful.php");
else header("Location: registration_unsuccessful.php");
}
?>
<?php
$full_name = ucwords($_POST["full_name"]);
$email = strtolower($_POST["email"]);
$password = md5($_POST["password"]);
check_email($email);
?>
Я изменил те:
if($num_rows>0) header("Location: registration_successful.php");
else header("Location: registration_unsuccessful.php");
чтобы:
if($num_rows>0) header("Location: registration_unsuccessful.php");
else header("Location: registration_successful.php");
Кажется, что ($ num_rows> 0) всегда возвращает FALSE 🙁
пожалуйста помоги,,
Спасибо….
Переменная $ connection отсутствует в check_email (), пожалуйста, установите global $connection;
для соединения дб вроде
function check_email($e_mail){
global $connection;
$query = "SELECT email FROM members ";
$query .= "WHERE email='$e_mail'";
$result = mysqli_query($connection, $query);
$num_rows = mysqli_num_rows($result);
if($num_rows>0) header("Location: registration_successful.php");
else header("Location: registration_unsuccessful.php");
}check_email($email);
ИЛИ ЖЕ
function check_email($e_mail, $connection){
$query = "SELECT email FROM members ";
$query .= "WHERE email='$e_mail'";
$result = mysqli_query($connection, $query);
$num_rows = mysqli_num_rows($result);
if($num_rows>0) header("Location: registration_successful.php");
else header("Location: registration_unsuccessful.php");
}check_email($email, $connection);
Хотя мне нравится 1-й 🙂
Проблема в тесте перед перенаправлением пользователя:
// if the rows are > 0 then it means the email already exists
// which means we should redirect to the unsuccessful registration page
if($num_rows>0) header("Location: registration_unsuccessful.php");
else echo header("Location: registration_successful.php");
// else, we redirect to successful registration page (meaning the email does not exists in DB)
и, как упомянул @Mihai, вы забыли объединить строку запроса.
Попробуйте код ниже
<?php
function check_email($e_mail)
{
$query = "SELECT email FROM members";
$query .= "WHERE email='$e_mail'";
$result = mysqli_query($connection, $query);
$num_rows = mysqli_num_rows($result);
if($num_rows>0) header("Location: registration_unsuccessful.php");
else echo header("Location: registration_successful.php")
}
?>
<?php
$full_name = ucwords($_POST["full_name"]);
$email = strtolower($_POST["email"]);
$password = md5($_POST["password"]);
check_email($email);
?>
использование
$query = "SELECT email FROM members ";
$query .= "WHERE email='".$e_mail."'";
Вы пропустили пробел после членов, скопируйте и вставьте его в свой код.
ИЛИ используйте простое решение
$query = "SELECT email FROM members WHERE email='".$e_mail."'";
Обновить
mysqli_store_result($connection);
$num_rows= mysqli_num_rows($user_query);
if($num_rows>0)
Причина ->
Используйте store_result для буферизации результата.