PHP
Помогите разобраться как правильно написать условие. Почему то мой вариант пропускает регистрацию.
Отсутствует обработка случая "пароли не совпадают". Должно же быть сообщение об ошибке. А у тебя в этом случае код вообще ничего не делает.
Отсутствует контроль значения e-mail.
Отсутствует контроль типа файла, переданного в качестве аватарки. А если будет передан PHP-файл с трояном? А потом он будет просто запущен из бразуера.
У тебя в коде отсутствует инициализация переменных $login, $email, $pass, $pass_double, которые ты используешь в INSERT. Если они инициализируются в variables.php, то это плохая идея.
Не надо использовать id в INSERT. Автоинкрементное поле в INSERT вообще не должно упоминаться.
Отсутствует экранирование значений в INSERT. Это делается в variables.php? Вставка значений непосредственно в SQL-запрос - это говнокод. Единственный реально работающий способ защиты от SQL-инъекций - параметризованные запросы. Тем более, что в PHP 8.1 работу с параметризованными запросами в mysqli упростили.
Вот так будет в современном PHP:
Зря извиняешься за проверку. Контролировать ввод только в JS нельзя. Проверка в JS делается только для того, чтобы уменьшить нагрузку на сервер. А реальный контроль правильности данных всегда должен быть в PHP: форма регистрации может быть отправлена непосредственно PHP-скрипту минуя браузерный JS-код.
Очень странное сохранение аватарки. У тебя же $login уникален. Следовательно, на каждого пользователя в uploads будет создаваться отдельная директория. Как только пользователей станет достаточно много, это начнёт дико тормозить. И как будешь вытаскивать аватарку, если имя файла не запоминаешь?
Отсутствует контроль значения e-mail.
Отсутствует контроль типа файла, переданного в качестве аватарки. А если будет передан PHP-файл с трояном? А потом он будет просто запущен из бразуера.
У тебя в коде отсутствует инициализация переменных $login, $email, $pass, $pass_double, которые ты используешь в INSERT. Если они инициализируются в variables.php, то это плохая идея.
Не надо использовать id в INSERT. Автоинкрементное поле в INSERT вообще не должно упоминаться.
Отсутствует экранирование значений в INSERT. Это делается в variables.php? Вставка значений непосредственно в SQL-запрос - это говнокод. Единственный реально работающий способ защиты от SQL-инъекций - параметризованные запросы. Тем более, что в PHP 8.1 работу с параметризованными запросами в mysqli упростили.
Вот так будет в современном PHP:
$query = 'INSERT INTO auth (login, email, pass) VALUES (?, ?, ?)';
$sql = mysqli_prepare($conn, $query);
if (!$sql->execute([$login, $email, $hash_pass])) {
// получаем ошибку SQL из $sql->error
}
Зря извиняешься за проверку. Контролировать ввод только в JS нельзя. Проверка в JS делается только для того, чтобы уменьшить нагрузку на сервер. А реальный контроль правильности данных всегда должен быть в PHP: форма регистрации может быть отправлена непосредственно PHP-скрипту минуя браузерный JS-код.
Очень странное сохранение аватарки. У тебя же $login уникален. Следовательно, на каждого пользователя в uploads будет создаваться отдельная директория. Как только пользователей станет достаточно много, это начнёт дико тормозить. И как будешь вытаскивать аватарку, если имя файла не запоминаешь?
Сипар Шарипов
Спасибо! Много полезной информации.
Сипар Шарипов
$login, $email, $pass, $pass_double, инициализируются в variables.php,. Почему это плохая идея? И как лучше сделать? Получается постоянно их объявлять сначала в обработчике регистрации, а потом в авторизации? я так делал вначале, но подумал что лучше раз их объявить, код будет короче. чем это вредно?
добавлю, что рекомендовано разделить все проверки по отдельным функциям, а не все в кучу
Похожие вопросы
- Приветствую, помогите пожалуйста я правильно понял суть языка программирования ,PHP
- Почему код авторизации и регистрации на PHP, написанный 3 года назад в видео на ютубе, сейчас не работает? И как быть?
- На php нужно написать универсальное условие для фильтрации данных
- Как сделать регистрацию и авторизацию на php без mysql. Напишите пример записи
- Авторизация php и регистрация проблемы с хэшэм
- Сверстал форму регистрации на сайте! Как сделать отправку?
- Помогите пожалуйста написать скрипт в perfect click
- PHP Задача. Помогите пожалуйста. Всё написал в пояснении.
- Здравствуйте. Я в замешательстве. У меня php система, и я еле разобрался как заставить её работать, но теперь у меня...
- Помогите с php кодом, плиз) хотел функцию транслитерации написать, только ошибка выходит и все :(