PHP / MySQL Member System всегда дает мне электронную почту, уже зарегистрированную

Код системы участника всегда перенаправляет меня на «адрес электронной почты уже зарегистрированной страницы»
Вот код, который я использую при обработке, чтобы проверить, будет ли электронная почта, то есть имя пользователя,
уже был взят или нет
пожалуйста помоги!!!!

<?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 🙁

пожалуйста помоги,,
Спасибо….

2

Решение

Переменная $ 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-й 🙂

2

Другие решения

Проблема в тесте перед перенаправлением пользователя:

// 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, вы забыли объединить строку запроса.

0

Попробуйте код ниже

<?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);
?>
0

использование

    $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 для буферизации результата.

0
По вопросам рекламы [email protected]