Как правильно сделать ajax валидацию на наличие email в базе?

Есть форма в ней поле
emailFromForm
перед сабмитом формы нужно проверить есть ли пользователь с таким email в базе , как это правильно с точки зрения лучших практик сделать ?
Запрос будет идти Ajax через POST на jQery по событию .focusout()
Достать SQL запросом все данные , result = WHERE userMail = emailFromForm , если result > 1 return "Такой уже есть"
или есть более "правильные" практики ?
  • Вопрос задан
  • 333 просмотра
Решения вопроса 1
sergiks
@sergiks Куратор тега PHP
♬♬
1. вы уверены, что нужно проверять это поле именно ajax'ом во время заполнения? Скорее всего, там ещё масса полей, и некоторые из них потребуется проверить на валидность. Напр. чтобы фамилия была не из одной буквы, а дата рождения не более 200 лет назад. Т.е. при принятии данных вы всё равно будете ещё раз проверять каждое из полей, включая email – так нужен ли ajax?

2. ни в коем случае не вставляйте прямо в SQL-запрос значение, которое пришло от пользователя (ajax'ом или вместе со всей формой). Обязательно обрабатывайте значения перед вставкой в запрос. Лучше всего использовать PDO и прикрепление параметров.

В БД обязательно сделайте индекс (index) по полю email – это ускорит поиск/сравнение. Приводите адрес к только-маленьким буквам, т.к. иногда могут вводить IvanSidorov@mail.ru, а иногда IVANsidorov@Mail.Ru
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
za4me
@za4me
Человек
более "правильные" практики

Более правильные практики построения sql запроса? :)
В целом у вас правильная логика, если есть данный адрес в БД - error, если нет - success.
Ответ написан
@backender_ru
https://backender.ru/
А почему бы не использовать filter_var с FILTER_VALIDATE_EMAIL и сделать SELECT COUNT(*) и если есть ошибка (такой email существует) выдать ее пользователю?

Я бы делал все одним запросом. А на клиенте сделайте
<input type="email">
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 12:20
10000 руб./за проект
22 нояб. 2024, в 11:53
3000 руб./за проект
22 нояб. 2024, в 11:51
20000 руб./за проект