Как мне зарегистрировать пользователя

В настоящее время у меня есть следующий код: Если это электронное письмо уже зарегистрировано, то пользователь будет повышен с сообщением. Однако, если электронная почта еще не зарегистрирована, они могут зарегистрироваться. Когда я запускаю этот код и регистрирую пользователя, который еще не зарегистрирован, он все еще получает предупреждение о том, что имя пользователя уже существует. Я думаю, что это может быть что-то с скобками!

<?php

include ("dbConnect.php");
require 'libPassword.php';

function filter_email_header($email){
return preg_replace('/[\0\n\r\|\!\/\<\>\^\$\%\*\&]+/','',$email);
}

if(isset($_POST['submit'])){
$forename = $_POST['forename'];
$surname = $_POST['surname'];
$telephone = $_POST['telephone'];
$address = $_POST['address'];
$medical_conditions = $_POST['medical_conditions'];
$dob = $_POST['dob'];
$email = $_POST['email'];
$password = $_POST['password'];
$last_login = date("Y-n-d");




$dbQuery=$db->prepare("SELECT email FROM customer where email > 0");
$dbParams = array('email'=>$email);
$dbQuery->execute($dbParams);
if ($dbQuery) {
$message = "username already exists";
echo "<script type='text/javascript'>alert('$message');</script>";
}//if
else{

$hashPassword = password_hash($pass, PASSWORD_BCRYPT, array("cost" => 12));

if($dbQuery->rowCount()==0){
$dbQuery=$db->prepare("INSERT INTO customer (forename, surname, telephone, address, medical_conditions, dob, email, password) VALUES (:forename, :surname, :telephone, :address, :medical_conditions, :dob, :email, :hashPassword)");
$dbParams = array('forename'=>$forename,'surname'=>$surname, 'telephone'=>$telephone, 'address'=>$address,'medical_conditions'=>$medical_conditions, 'dob'=>$dob, 'email'=>$email, 'hashPassword'=>$hashPassword);
$dbQuery->execute($dbParams);
if($dbQuery) {


header("Location: myProfile.php");
}//if

}//if
else{
echo('Please fill out all fields marked with *');
}//else2
}//else1

if(isset($email)){
$sender='jess@gymmembership.com';
$email = filter_email_header($email);
$headers = "From:". $sender;
$to      = $email; // Send email to our user
$subject = 'Signup | Verification'; // Give the email a subject
$message = '

Thanks for signing up!
Here is your login details:

------------------------
Your email: '.$email.'
Password: '.$password.'
------------------------

You can now login to your account:


'; // Our message above including the link

$headers = 'From:gymmanagementsystem' . "\r\n"; // Set from headers
//mail($to, $subject, $message, $headers); // Send our email
$sent=mail($to, $subject, $message, $email);
}}
?>

1

Решение

Возможно, потому что вы проверяете, выполнен ли запрос, а не проверяете, действительно ли вы получили совпадение. Проверьте, если ваш номер строки> 0.

if ($dbQuery) {
$message = "username already exists";
echo "<script type='text/javascript'>alert('$message');</script>";
}

Также уверен, что вы действительно захотите сравнить с таким письмом.

"SELECT email FROM customer where email = :email"

Я также не заменил бы нежелательный символ в электронном письме, возможно, они пишут «!» вместо «@» случайно ваш адрес электронной почты не будет действительным. Я бы предложил уведомить, что электронная почта недействительна и по какой причине.

1

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

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector