[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не могу разобраться с запросом в БД
pro_xaoc
Приветствую Всех! У меня такая ситуация, когда я отправляю запросы, то у меня в конце страницы после тэга </html> всегда выводится Извините, но такой пользователь уже существует. Выберите другой логин., т.е. выполняются оба условия, когда должно выполняться только одно из них, не могу понять в чем причина. Да и еще, почему та строка выводится после тэга html, не пойму. Код привожу ниже:
$name = htmlentities($_POST['name']);
$login = htmlentities($_POST['akk']);
$password = htmlentities($_POST['password']);
$email = htmlentities($_POST['email']);
$queryRes = db::compare("SELECT `akkaunt` FROM `users` WHERE akkaunt='$login'");
if ($queryRes > 0) {
echo "Извините, но такой пользователь уже существует. Выберите другой логин.";
} else{
db::query(null,null,"INSERT INTO `users`(`name`,`akkaunt`,`password`,`email`) VALUES('$name','$login','$password','$email')");
echo "registry is succesfull";
}

а это функции из класса db:

function query($reg,$row_num,$ins){
if($reg!=null & $row_num!=null & $ins==null){
$result = mysql_query($reg) or die ("Ошибка: ".mysql_error());
$myrow = mysql_fetch_assoc($result) or die ("Ошибка: ".mysql_error());
return $myrow[$row_num];
} elseif($reg==null & $row_num==null & $ins!=null){
return mysql_query($ins) or die ("Ошибка: ".mysql_error());
}
}

function compare($reg){
$result = mysql_query($reg) or die ("Ошибка: ".mysql_error());
return mysql_num_rows($result);
}

Заранее спасибо за любую помощь :)



Спустя 40 минут, 19 секунд (13.06.2011 - 13:28) allplayer написал(а):
("SELECT `akkaunt` FROM `users` WHERE akkaunt='"$login"' ")


А может тебе надо искать не в akkaunt а в строке login???
("SELECT `login` FROM `users` WHERE akkaunt='"$login"' ")

Спустя 8 минут, 26 секунд (13.06.2011 - 13:37) allplayer написал(а):
Вобще ты запрос не так делаешь.
Вот, пользуйся:
$checkuser = mysql_query("SELECT username FROM tb_users WHERE username='$username'");
$username_exist = mysql_num_rows($checkuser);

if ($username_exist>0)
{
echo "Такой логин есть в системе.";
}else{
//ololololo
}

Спустя 3 минуты, 51 секунда (13.06.2011 - 13:40) nugle написал(а):
allplayer
это тоже неверно))

$checkuser = mysql_query("SELECT username FROM tb_users WHERE username='".mysql_real_escape_string($username)."'");
$username_exist = mysql_num_rows($checkuser);

if ($username_exist > 0)
{
echo "Такой логин есть в системе.";
}else{
//ololololo
}

Спустя 2 минуты, 25 секунд (13.06.2011 - 13:43) pro_xaoc написал(а):
у меня на счет логики добавления или не добавления в базу данных нормально вроде работает, я не могу понять, откуда у меня в конце после тэга </html> выходит Извините, но такой пользователь уже существует. Выберите другой логин.? Думаю это косяк условия ... Помогите разобраться.

Спустя 1 минута, 54 секунды (13.06.2011 - 13:45) allplayer написал(а):
nugle, почему? huh.gif

pro_xaoc, ваыложи код всей страницы smile.gif


Спустя 2 минуты, 50 секунд (13.06.2011 - 13:48) nugle написал(а):
allplayer
потому что можно подвергнуться sql-инъекции или xss атаке

Спустя 2 минуты, 54 секунды (13.06.2011 - 13:51) pro_xaoc написал(а):
nugle
ну самое главное для начала это функционал, а безопасность после его разработки. Весь код выложить думаю не получится, т.к. он у меня очень большой, да и ошибка должна быть в выше изложенном коде (думаю smile.gif )

Спустя 2 минуты, 55 секунд (13.06.2011 - 13:53) nugle написал(а):
попробуй вывести $queryRes и посмотри что там внутри

Спустя 3 минуты, 53 секунды (13.06.2011 - 13:57) pro_xaoc написал(а):
переменная $queryRes выводит 1 в случае если в БД есть такое поле и 0, если такого нет. Но странно то, что первое условие выполняется в любом случае, будь то истина или ложь.

Спустя 2 минуты, 34 секунды (13.06.2011 - 14:00) nugle написал(а):
pro_xaoc
вот ты напиши прям echo $queryRes;
что так сложно это сделать?

Спустя (13.06.2011 - 14:00) allplayer написал(а):
Выкладывай. так ничего сказать нельзя...

nugle, давай-ка подробнее про атаки и инъекции wink.gif

Спустя 1 минута, 14 секунд (13.06.2011 - 14:01) pro_xaoc написал(а):
nugle
я проверил говорю, там мне вывело 1, т.к. в БД, уже есть такое поле.

Спустя 6 минут, 2 секунды (13.06.2011 - 14:07) nugle написал(а):
тогда чему ты удивлен? ты же сам написал
if ($queryRes > 0) {
echo "Извините, но такой пользователь уже существует. Выберите другой логин.";
}

allplayer
тут почитай http://phpforum.su/index.php?showtopic=21213

Спустя 17 минут, 1 секунда (13.06.2011 - 14:24) pro_xaoc написал(а):
nugle
да, это правильно, но он у меня выводится в двух местах: 1) там где мне надо и 2) в конце страницы после тэга </html>.
Скрин
По условии должно вывестись либо первое условие (в случае если в БД есть такое поле), либо второе условие (если такого поля нет, то создать такое и вывести "успех").

Спустя 1 минута, 47 секунд (13.06.2011 - 14:26) nugle написал(а):
pro_xaoc
а ты пробовал не существующие вводить, что получается?

смотри может где еще раз случайно вызвал.

Спустя 2 минуты, 47 секунд (13.06.2011 - 14:29) allplayer написал(а):
Жесть эти инъекции.. Одного соперника уже потопил rolleyes.gif
ololo'; DELETE FROM `tb_users` WHERE `username`!='0 laugh.gif

Спустя 2 минуты, 10 секунд (13.06.2011 - 14:31) pro_xaoc написал(а):
если я ввожу не существующие, то в БД появляется новое поле и там где мне надо, выводится надпись "registry succesfull", а в конце после тэга </html> выводится "Извините, но такой пользователь уже существует. Выберите другой логин." mad.gif что за бред

Спустя 3 минуты, 26 секунд (13.06.2011 - 14:34) nugle написал(а):
pro_xaoc
посмотри, может где-то еще вызывается метод или просто написано
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.