[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка наличия результатов в БД
Bizon4ik
Доброе время суток.

Что я запутался в 3-х соснах и посему прошу вас вывести меня.

Объясните мне, пожалуйста, почему в ниже указанyом коде в переменную $wrong_login всегда записывается "good job ..." внезависимости от значений $_POST?
При этом если совпадений в БД нет, то на месте $row['....'] выводится пустое место, а если совпадение есть выводится данные из БД


$query="SELECT * FROM `admins` WHERE `user`='".$_POST['login']."' AND `password`='".sha1($_POST['password'])."' ";
$result=$db->query($query);


if (!$result) {
$row=$result->fetch_assoc();
$wrong_login = "Неправильное логин и/или пароль ".$row['user']."</br>".$row['password'];
} else
{
$row=$result->fetch_assoc();
$wrong_login = "good job login:".$row['user']."</br> password:".$row['password'];
}

}

sergeiss
Цитата (Bizon4ik @ 26.11.2013 - 02:15)
Что я запутался в 3-х соснах и посему прошу вас вывести меня.

Вот ответь: этот код "if (!$result)" когда сработает? Думаешь, когда в таблице ничего не найдено? Или все-таки тогда, когда будет ошибка при выполнении запроса? Я так думаю, что второе smile.gif А ты (судя по коду) - что первое.

Тот блок обработки, что идет после if (!$result) - это вообще нонсенс! В случае ошибки ты пытаешься из неверной переменной (скорее всего там будет просто false!!!), получить fetch_assoc(). Это как???

Вобщем... Тебе лучше написать в запросе "SELECT COUNT(*) FROM...", чтобы просто подсчитать количество строк с данными. Тогда у тебя ВСЕГДА будет число в ответе, которое ты можешь легко проанализировать: равно нулю - нет юзера, равно 1 - есть юзер.

И еще. У тебя в этом запросе просто гигантские ворота для SQL-инъекции. Надо данные готовить, прежде чем в запрос засовывать.

А как изменить обработчик... Сам подумай smile.gif

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Bizon4ik
sergeiss в первую очередь спасибо за ответ.

Я еще хотел немного по оправдываться на счет вашей конструктивной критики, но думаю Вам это не интересно smile.gif
Вы мне лучше подскажите, пожалуйста, пример хоть одной SQL-инъекции, так для общее образовательных целей. А то я думал что значение их формы нужно проверять если я их потом куда-то записываю и/или вывожу. А в моем примере я только сравниваю, и даже не думал что через сравнение можно тоже навредить.

Заранее спасибо.
Быстрый ответ:

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