- PHP
- валідація
Всім здрастуйте!
Допоможіть, будь ласка, розібратися з коректною валідацією email.
Є HTML форма (в прикладі представлена частина форми для email):
Розумію, що треба використовувати FILTER_VALIDATE_EMAIL. але куди саме потрібно вписати "зразок", за яким буде відбуватися подальше порівняння внесених в форму даних?
Є думка оформити загальний підхід до валідації email так:
1 варіант:
Якщо в цьому полі форми було щось введено if (isset ($ _ POST [ "email"])), то починаємо здійснювати перевірку на коректність внесених даних, а саме:
використовувати if (! filter_var ($ _ POST [ 'email'], FILTER_VALIDATE_EMAIL)).
Якщо введені дані коректні (тобто відповідають наперед заданого шаблону, наприклад $ var = "[email protected]";), то продовжуємо роботу по інших полях форми.
А Якщо введені дані є некоректними, то відправляємо значення в масив помилок ($ errors) і виводимо попередження про це ($ errors [ 'email'] = "Неможливо валідний email";). А якщо ніякі дані не були введені, то "порожнє" значення теж вирушає в цей же масив помилок ($ errors). для нього встановлено вже своє повідомлення ($ errors [ 'email'] = "Не заповнене обов'язкове поле";).
2 варіант:
Якщо було відправлено порожнє поле email, то присвоюється отримане значення в масив помилок і видаємо повідомлення "Не заповнене обов'язкове поле" (як це є в частині представленого коду), інакше якщо поле email було порожнім (якісь дані все ж були введені) , то починаємо перевірку: Якщо внесені дані є некоректними (тобто відповідають наперед заданого шаблону, наприклад $ var = "[email protected]";), значить отриманий результат відправляти в масив помилок з видачею повідомлення "Чи не валідний email". Інакше (якщо отриманий результат коректний), то продовжуємо рухатися по перевірці інших форм.
Найголовніше питання:
в якому місці коду необхідно поставити це шаблон / зразок ($ var = "[email protected]), за яким буде відбуватися порівняння введеної пошти на її коректність; щоб все працювало так як потрібно, і щоб цей зразок ніде в браузері не спливав?
Заздалегідь дякую за допомогу!
Кому цікаво - ось рішення:
Треба було прибрати заперечення перед filter_var ($ _ POST [ "email"]. І т.д.
І ставити шаблон / зразок, як було в прикладі w3school, не треба.
Все працює так, як потрібно.
Ой, а я намагаюся, відповідь додаю) А думав Вам взагалі потрібно всю валідацію від і до, благо глянув на відповіді.
Заповнив свій профіль
А це у Вас, вибачте-с, що за зразок такої? Звідки він і яким чином Ви плануєте по ньому що-небудь перевірити? Перевіряти потрібно регулярки вже при відправці форми. Тобто коли користувач натиснув кнопку "Відправити" у формі.
Велике спасибі за відповідь, але він мені, на жаль, не підходить.
Приклад для використання функції FILTER_VALIDATE_EMAIL наводиться в тому числі і тут: www.w3schools.com/php/filter_validate_email.asp
Але проблема в тому, що я не знаю, куди - в яке саме місце в моєму коді - визначити $ var = "[email protected]" для того, щоб саме за цією формою визначався email незалежно від того, які символи будуть використані . У мене для кожного поля форми помилки виводяться кожен на своєму місці. Власне, частина форми HTML писала на початку питання. Мені не дуже подобається, коли в одному повідомленні виводиться інформація про всі допущені помилки відразу. Краще для кожного поля - в своєму відведеному місці: в моєму випадку: це навпроти кожного поля, де була допущена помилка. Якось так.
Наталія. Краще вже використовувати регулярки, бо це моя примха, однак Ви можете взяти приклад, пропонований W3C, суть від цього не зміниться: для того, щоб перевірити контент в будь-якому полі, форму потрібно отсабмітіть (натиснути кнопочку "Зберегти" або ще якось, але в будь-якому випадку всі дії з нею робляться тільки після її сабмита. що стосується Вашого прикладу - Вам потрібна асинхронна передача даних. Я доповню свій відповідь, розповівши коротко що для цього потрібно, бо тут не можна код відформатувати.