Мне тут сказали, что
...
$sqlResult = $connect->query("SELECT * FROM `users` WHERE `login` = '$login' AND `password` = '$password'");
if( mysqli_num_rows($sqlResult) == 0) {
//Авторизация.
}
...
не очень хороший вариант, сойдёт ли
...
$max_user_id = mysqli_fetch_array(mysqli_query($connect, "SELECT MAX(`id`) FROM `accounts`"))[0];
for ($id = 1; $id <= $max_user_id; $id++) {
$db_login = mysqli_fetch_array(mysqli_query($connect, "SELECT `login` FROM `accounts` WHERE `id` = $id"))[0];
$db_password = mysqli_fetch_array(mysqli_query($connect, "SELECT `password` FROM `accounts` WHERE `id` = $id"))[0];
if ($login == $db_login && $password == $db_password) {
//Авторизация
}
...
?
PHP
PHP - Сойдёт ли авторизация, или менять?
Боже упаси. Представьте, что тот же ВКонтакте проверял бы все аккаунты при попытке авторизации ОДНОГО юзера. (даже без учёта блокированных и удалённых) - сколько времени у вас ушло бы, еслиб проверялось 300кк аккаунтов? (у вк 500, да, но 200 отбросим - боты там всякие, удалёнки, заброшенные и блоки)
Получайте необходимого юзера по логину - SELECT `password` FROM `accounts` WHERE `login` = ?
знак вопроса потому что стоит использовать mysqli::prepare, да и вообще лучше писать в объектно-ориентированном стиле - код выглядит куда проще, и читать его легче.
Получайте необходимого юзера по логину - SELECT `password` FROM `accounts` WHERE `login` = ?
знак вопроса потому что стоит использовать mysqli::prepare, да и вообще лучше писать в объектно-ориентированном стиле - код выглядит куда проще, и читать его легче.
Anushervon Rustamov
Спасибо за ответ, буду искать альтернативу.
Не нужно ничего менять, а то слетит!
Что за дебил придумал запрашивать в цикле каждого юзера?
А если юзеров там будет больше трёх?)
А если юзеров там будет больше трёх?)
Anushervon Rustamov
Какой-то юзер одного из форумов
Евгений Лапин
ещё больше мне интересно кто придумал разбивать один запрос на два...
Полная куета! Как минимум сессии используй...
Можно упростить. Делай выборку пользователя, сравнивая логин и пароль прямо в базе данных с помощью WHERE. Не надо все пароли загружать в переменные.
Anushervon Rustamov
Вроде этого?
$a = mysqli_fetch_array(mysqli_query($connect, "SELECT `id` FROM `accounts` WHERE `login` = $login AND `password` = $password"))[0];
if($a != null) {//авторизация}
$a = mysqli_fetch_array(mysqli_query($connect, "SELECT `id` FROM `accounts` WHERE `login` = $login AND `password` = $password"))[0];
if($a != null) {//авторизация}
Еще код научись писать стройно. А то такая вермишель, и смотреть не хочется. Запрос надо отдельно, обработка результата отдельно.
И если не сказали еще - где prepared statements?
И если не сказали еще - где prepared statements?
1.Безопасность. Вижу возможность sql-инъекции. Поэтому следует использовать подготовленные запросы о чем сказано выше.
2.Безопасность. Пароли всегда следует хранить в зашифрованном виде.
http://php.net/manual/ru/book.password.php
3.Использование сессий и куков (ну чтоб не приходилось каждый раз логиниться).
Если глубже погружаться, то авторизация и аутентификация - очень-очень сложные темы со своими подводными камнями. Как хорошо что есть фреймворки, где все уже реализовано)
Был вопрос - сойдет ли авторизация? Такая - нет, даже в учебном проекте
2.Безопасность. Пароли всегда следует хранить в зашифрованном виде.
http://php.net/manual/ru/book.password.php
3.Использование сессий и куков (ну чтоб не приходилось каждый раз логиниться).
Если глубже погружаться, то авторизация и аутентификация - очень-очень сложные темы со своими подводными камнями. Как хорошо что есть фреймворки, где все уже реализовано)
Был вопрос - сойдет ли авторизация? Такая - нет, даже в учебном проекте
Anushervon Rustamov
2. у меня будет $password = md5($_POST['password']);
3. там, где //авторизация одной из строк будет $_SESSION['authorized'] = 'yes';
Уже лучше?
3. там, где //авторизация одной из строк будет $_SESSION['authorized'] = 'yes';
Уже лучше?
Дмитрий Чабан
такая не сойдёт, кстати, даже на пьяную голову в качестве какого-то примера "как не нужно делать"...
Похожие вопросы
- Пишу авторизацию (php). Куки не работают
- Не работает авторизация на php
- Авторизация php и регистрация проблемы с хэшэм
- Как сделать регистрацию и авторизацию на php без mysql. Напишите пример записи
- Почему код авторизации и регистрации на PHP, написанный 3 года назад в видео на ютубе, сейчас не работает? И как быть?
- PHP Polling ChatGPT
- оцените мою первую регистрацию и авторизацию
- Как оптимизировать структуру сайта php. на готовом шаблоне
- Не работает PHP include на хостинге
- Хеширование пароля php