2015-02-05 2 views
0

Я не могу для жизни меня узнать, что с этим не так. Вероятно, это скрытое правило или глупая ошибка. Этот код предназначен для предотвращения одновременного создания пользователями одного и того же адреса электронной почты, но работает только для имени пользователя. Я что-то упустил или это просто глупая ошибка? Я использую два утверждения if, чтобы попытаться достичь этого (как отмечено комментариями), но он не работает.Застрял, пытаясь предотвратить создание дубликатов пользователей

Заранее спасибо

$username = $_POST['username']; 
$password = $_POST['password']; 
$email = $_POST['emailAddress']; 


// Create connection 
$conn = new mysqli($servername, $SQLusername, $SQLpassword, $DBname); 

// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysql_connect_error()); 
} 

$sql = "SELECT * FROM `Login` WHERE `Username` LIKE '$username' AND `Password` LIKE '$password';"; 
$result = mysqli_query($conn, $sql); 
$row = mysqli_fetch_assoc($result); 

$emailDB = $row['Email']; 
$usernameDB = $row['Username']; 

// username validation 
if ($username == $usernameDB) 
{ 
    echo "Username '$username' is already taken!<br>"; 
    exit; 
} 
//E-mail validation 
if ($email == $emailDB) 
{ 
    echo "Email '$email' is already registered!<br>"; 
    exit; 
} 
+0

* но он не работает * Можете ли вы описать это немного больше ?! – Rizier123

+1

Ваш запрос не выглядит так, как будто он проверяет, что вы хотите. Вам просто нужно подсчитать строки, соответствующие паролю или имени пользователя. Если они есть, у вас есть дубликат. Вы можете использовать = для запроса, а не как. –

+2

Это также считается плохой практикой для хранения паролей с открытым текстом, но это еще одна история. –

ответ

0

Вам просто нужен другой запрос :))):

$sql = "SELECT * FROM `Login` 
     WHERE `Username` LIKE '$username' 
     OR `Email` LIKE '$email';"; 
$result = mysqli_query($conn, $sql); 
$row = mysqli_fetch_assoc($result); 

$emailDB = $row['Email']; 
$usernameDB = $row['Username']; 

// username validation 
if ($username == $usernameDB) 
{ 
    echo "Username '$username' is already taken!<br>"; 
    exit; 
} 
//E-mail validation 
if ($email == $emailDB) 
{ 
    echo "Email '$email' is already registered!<br>"; 
    exit; 
} 

и вы должны лучше использовать:

"SELECT * FROM `Login` 
      WHERE `Username` = '$username' 
      OR `Email` = '$email';" 

, потому что, если он на самом деле не равны , новый пользователь может быть зарегистрирован :-)

Смежные вопросы