Проверьте, проверен ли пользователь mysql

Я ищу, чтобы узнать, проверен ли пользователь, когда он пытается войти в систему, но я делаю что-то неправильно

$validationsql = mysql_query("SELECT Validation FROM users WHERE Username = '".$username."' AND Password = '".$password."'");
$validationresult = mysql_query($validationsql) or die('error');
if ($validationresult == "'FALSE'")
{
         echo "

Validation Error

";
         die;
}
3
nl ja de
SQL INJECTION !!!! Подробнее см.
добавлено автор asprin, источник
и какова ваша проблема?
добавлено автор Muhammad Raheel, источник
Используйте mysql_num_rows ($ validationsql), чтобы получить число результатов. если равно 1, то true else false
добавлено автор One Man Crew, источник
Что означает «не работает»? «Не работает» - это неадекватное описание для понимания проблемы. Что случилось, когда вы попробовали? Получили ли вы неправильные результаты? Получили ли вы результаты no ? Если результаты были неверными, что сделало их неправильными? Что вы ожидали вместо этого? Получили ли вы любые правильные результаты? Если да, то каковы они? Не заставляй нас гадать.
добавлено автор Andy Lester, источник
Вы оставляете себя широко открытым для SQL-инъекции. Пожалуйста, узнайте об использовании параметризованных запросов, желательно с модулем PDO, для защиты вашего веб-приложения. bobby-tables.com/php.html есть примеры, чтобы вы начали.
добавлено автор Andy Lester, источник
Бог, который был много ответов быстрее, чем я ожидал, совершенно новый с SQL, который пытается научиться методом проб и ошибок. Так извините мое невежество. Как я сказал PLB, у меня есть mysql_real_escape_string, там просто не публиковал. Посмотрите на мой ответ, чтобы посмотреть, где я нахожусь.
добавлено автор Mark Berry, источник

3 ответы

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

$validationsql = mysql_query("SELECT Validation FROM users WHERE Username = '".$username."' AND Password = '".$password."'"); //Retrives data from database
$usersfound = mysql_num_rows($validationsql) or die('error'); //counts how many records have been retrieved
/*
 *If number of data is not 1 (assuming you have unique users) validation fails
*/
if ($usersfound !== 1)
{
         echo "

Validation Error

";
         die;
}

But if you don't use prepared statements you have to escape data for security purposes (sql injection). To do so you can use mysql_real_escape_string. After this your code will become:

$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);

$validationsql = mysql_query("SELECT Validation FROM users WHERE Username = '".$username."' AND Password = '".$password."'"); //Retrives data from database
$usersfound = mysql_num_rows($validationsql) or die('error'); //counts how many records have been retrieved
/*
 *If number of data is not 1 (assuming you have unique users) validation fails
*/
if ($usersfound !== 1)
{
         echo "

Validation Error

";
         die;
}

And it still does not mean that you're doing everything right. mysql_* functions are deprecated. You should be using either PDO or mysqli_* functions. Also you have to actively use prepared statements.

2
добавлено
точно чувак. ты прав
добавлено автор Gautam3164, источник
@MarkBerry Добавьте еще одно условие в где : ... WHERE Username = 'username' AND password = 'pass' И активировано = 1 . Также читайте больше о безопасности, на которую я ссылался, некоторые хорошие моменты для начала. ;)
добавлено автор Leri, источник
Извините, что вы правы, но я неправильно объяснил свою проблему. Сначала у меня уже есть mysql_real_escape_string, но, честно говоря, я понятия не имел, для чего это было. Кроме того, путем проверки того, что я имел в виду, было проверить, подтвердили ли они свою учетную запись, проверка находится в базе данных как ENUM True или False, что я пытался сделать, это проверить, зарегистрированы ли они или нет.
добавлено автор Mark Berry, источник

1-я вещь просто не хранит пароль. Используйте что-то вроде MD5 или другого метода хэширования.

Попробуйте приведенный ниже код

if (!$validationresult)
{
         echo "

Validation Error

";
         die;
}
0
добавлено

Предполагая, что у вас есть поле под названием «Validation» в вашей таблице базы данных, если оно не изменилось на SELECT * FROM ...

$validationsql = "SELECT Validation FROM users WHERE Username = '".$username."' AND Password = '".$password."'";
$validationresult = mysql_query($validationsql) or die('error');
if (mysql_num_rows($validationresult) == 0)
{
         echo "

Validation Error

";
         die;
}

Лучше использовать mysqli ИЛИ PDO, который является безопасным. В вашем коде много уязвимостей

0
добавлено
phpGeeks
phpGeeks
3 620 участник(ов)

Best PHP chat Еще: @dbGeeks - базы данных @phpGeeksJunior - новичкам @moscowProgers - IT Москва @ebanoePhp - весёлый канал о PHP @laravel_pro - Laravel @jobGeeks - вакансии @jsChat - JS Правила: https://t.me/phpGeeks/764859 ДР - 28.03.2016

DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

PHP
PHP
1 309 участник(ов)

Группа про современный PHP. Обсуждаем ООП, TDD, BDD, DDD, SOLID, GRASP и прочие крутые базворды Для ознакомления: https://gist.github.com/mkusher/711bd46f0b62fbae851182e6fb3b1839 Группа PHP для новичков @phpGeeksJunior Вакансии: https://t.me/fordev

PHP — вакансии, поиск работы и аналитика
PHP — вакансии, поиск работы и аналитика
1 251 участник(ов)

Публикуем вакансии и запросы на поиск работы по направлению PHP, Laravel, Symfony, Yii и т.д. Здесь всё: full-time, part-time, remote и разовые подработки. См. также: @qa_jobs, @devops_jobs, @javascript_jobs, @nodejs_jobs, @uiux_jobs, @products_jobs

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

phpGeeksJunior
phpGeeksJunior
980 участник(ов)

Группа для новичков. Не стесняйтесь задавать вопросы по php. Не флудить!!!! Правила и полезные ссылки https://gist.github.com/exileed/a53dd0617b35a705ff44b38c8028e6a5 Бест от пхпгикс https://t.me/best_of_phpgeeks

phpclub.ru
phpclub.ru
872 участник(ов)

Официальный чат phpclub.ru - остерегайтесь подделок #rules Правила группы - уважайте друг друга. Скриншоты -> ссылками. Код -> pastebin.com. Вакансии строго -> https://goo.gl/4bNxym, в чат ссылку. За рекламу и мат - БАН!

Devall | PHP
Devall | PHP
272 участник(ов)

Пристанище для восходящих звёзд разработки, которые перейдут на более адекватные языки. http://combot.org/chat/-1001014863761 Инвайт: j.mp/devallphp