Как мне зарегистрировать пользователя - PullRequest
0 голосов
/ 30 апреля 2018

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

<?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 голосов
/ 30 апреля 2018

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

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

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

"SELECT email FROM customer where email = :email"

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

...