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:
 $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 будет создаваться отдельная директория. Как только пользователей станет достаточно много, это начнёт дико тормозить. И как будешь вытаскивать аватарку, если имя файла не запоминаешь?
Иван Никитин
Иван Никитин
82 539
Лучший ответ
Сипар Шарипов Спасибо! Много полезной информации.
Сипар Шарипов $login, $email, $pass, $pass_double, инициализируются в variables.php,. Почему это плохая идея? И как лучше сделать? Получается постоянно их объявлять сначала в обработчике регистрации, а потом в авторизации? я так делал вначале, но подумал что лучше раз их объявить, код будет короче. чем это вредно?
добавлю, что рекомендовано разделить все проверки по отдельным функциям, а не все в кучу
Сергей Мышкин
Сергей Мышкин
62 369