повторяющиеся записи MySQL и PHP - PullRequest
1 голос
/ 26 февраля 2009

Я установил поля для своей базы данных "username" и "email" для отмены запроса, при использовании приведенного ниже кода это работает, только если "username" уже существует, затем отображается ошибка. Если электронная почта существует, пользователь получает ошибку дублирования mysql, когда должна отображаться та же ошибка, что и выше.

<?php

require_once ( 'connection.php' );

$username=$_POST['username']; 
$password=md5($_POST['password']);
$email=($_POST['email']);
$ip=$_SERVER['REMOTE_ADDR'];
session_start();

$query = "INSERT INTO users (username, password, email, rank, ip, active) VALUES     ('$username','$password', '$email', '1', '$ip', '0')";

$sql = "SELECT username AND email FROM users WHERE username = '$username' AND  email     = '$email'" ;
$result=mysql_query($sql);
$count=mysql_num_rows($result);
$row = mysql_fetch_array($result);

if ( $count== 0 )
{
if (!mysql_query($query))
{
 die('Error: ' . mysql_error());
}
  echo "You are signed up, please follow the link on your email to active your        account.";
}
else
 {
  echo "Username or Email already exists"."<br><a href=\"sign_up.php\">Try    Again</a></br>";
 }  
?

Спасибо

Ответы [ 2 ]

3 голосов
/ 26 февраля 2009

Попробуйте переключиться

WHERE username = '$username' AND  email     = '$email'"

до

WHERE username = '$username' OR email     = '$email'"

Редактировать : Я пытаюсь угадать, что вы пытаетесь сделать здесь. Из вашего описания кажется, что вы хотите, чтобы имя пользователя или адрес электронной почты были уникальными, и у вас есть два отдельных уникальных индекса в этих столбцах. Ваш код проверяет, чтобы имя пользователя и адрес электронной почты были уникальными.

Редактировать 2 : Кроме того, я думаю, вы, возможно, захотите взглянуть на понятия SQL-инъекция и Параллелизм .

1 голос
/ 26 февраля 2009

Переключитесь на предложение OR в выражении WHERE вместо AND.

Кроме того, НЕ используйте значения, указанные в $ _POST (или $ _GET и $ _REQUEST в этом отношении), не убедившись, что они безопасны. Что произойдет, если я отправлю имя пользователя с SQL в нем?

','','','','',''); DELETE FROM users; 

Убедитесь, что вы используете add_slashes () или аналогичный процесс для очистки данных перед отправкой в ​​базу данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...