Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Насколько правильна такая проверка полей в форме?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Алексей_М
Отправлено: 04 Марта, 2016 - 15:34:44
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Добрый день,

Сделал форму обратной связи, поля:
- имя
- имейл
- сообщение

после нажатия на Отправить, перед тем как перейти на страницу (урл) где идёт непосредственно Отправка на сервер , идёт проверка Яваскриптом, на правильность формата имейла:
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(email))

если имейл введён не верно, то вылетает окно Яваскрипта с просьбой ввести имейл правильно.

если имейл введён верно, то идёт переход на страницу <form action=send.php …..
где идёт проверка имейла на нехорошие символы и после запись сообщения в файл.

Насколько верный такой подход? Потому что зайдя на сайт с Андройда, при Отправке сообщения специально ввёл не верный имейл, вылетело окно Яваскрипта с предупреждением что надо ввести верный формат, но случайно нажал на «Запретить вывод дополнительных окон»,
и теперь при не правильном вводе имейла, никакого предупреждения на Яваскрипте естественно мы не получаем. Поэтому подумал, а верный ли этот способ, ведь так можно упустить желающего написать сообщение.

Почему не делаю проверку в файле субмита формы form action=send.php ….> ,без всяких яваскриптов.
Потому что на этом файле будет висеть Цель Метрики, и в случае удачной отправки сообщения, мы получим что Цель достигнута. Но если организовать проверку в файле send.php, то Цель будет достигнута даже тогда, когда имейл введён не верно. Поэтому на send.php мы должны перейти только если всё введено верно.

Как лучше тогда это сделать?
 
 Top
Мелкий Супермодератор
Отправлено: 04 Марта, 2016 - 15:47:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Потому что не используйте alert. Вообще никогда.
Подсветите поле красным (актуально для европы, в азии другие нормы) и покажите неподалёку сообщение, что email неверен.

И если вы не в прошлом десятилетии застряли, то уже актуален input type="email" required с нативной проверкой по упрощённому RFC и внятным системным валидатором.
Ваша регулярка стандарты вообще грубо нарушает, так что будет огромным шагом вперёд.


-----
PostgreSQL DBA
 
 Top
Алексей_М
Отправлено: 04 Марта, 2016 - 15:56:36
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Мелкий пишет:
уже актуален input type="email" required с нативной проверкой по упрощённому RFC и внятным системным валидатором.


у меня:
CODE (html):
скопировать код в буфер обмена
  1.            
  2. <div class="field">
  3.  <input type="text" name=email id='email' value="" size="30" required>


только required в моём случаи мониторит введёно ли Поле вообще и выдаёт ошибку если не введено, но формат не проверяет.
+ а везде ли он работает во всех ли версиях и во всех ли браузерах.

в идеале конечно хотелось бы вообще уйти от send.php, т.е. чтобы вся обработка была на одной странице, но тут дело в Метрике, кажется она не поймёт так Цель. Можно вешать Цель на "Отправить", но тогда при любом нажатии на Отправить будет это Цель срабатывать.

(Отредактировано автором: 04 Марта, 2016 - 15:58:04)

 
 Top
Мелкий Супермодератор
Отправлено: 04 Марта, 2016 - 16:05:02
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




http://caniuse[dot]com/#search=input-email
Плюс поспрашивайте фронтендщиков на предмет плагинов совместимости.

По метрике: https://yandex[dot]ru/support/metrik[dot][dot][dot]ts/reachgoal[dot]xml и всё, какие проблемы?


-----
PostgreSQL DBA
 
 Top
Алексей_М
Отправлено: 04 Марта, 2016 - 16:11:48
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




Мелкий пишет:

По метрике: https://yandex[dot]ru/support/metrik[dot][dot][dot]ts/reachgoal[dot]xml и всё, какие проблемы?


потому что при субмите формы:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <form action="send.php" method="get" onsubmit="yaCounterXXXXXX.reachGoal('ORDER', function ()


если у нас проверки на плохие символы и т.д. идут в send.php , то всё равно будет субмит и засчитана Цель.
 
 Top
Мелкий Супермодератор
Отправлено: 04 Марта, 2016 - 16:15:31
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




А хто сказал, что цель вызывать можно только на сабмите? Кто сказал, что только инлайном?
Та хоть со страницы "спасибо за обращение" дёргайте или куда вы после успешной обработки формы пересылаете.


-----
PostgreSQL DBA
 
 Top
Алексей_М
Отправлено: 04 Марта, 2016 - 16:18:54
Post Id


Гость


Покинул форум
Сообщений всего: 81
Дата рег-ции: Дек. 2012  


Помог: 0 раз(а)




хотелось бы никуда не посылатьУлыбка
а всё делать на одной странице, ну форму - ок, можно послать на саму себя для проверки данных полей, но в случаи с Целью как тогда подсунуть этот ReachGoal, как-то не ясно.

на Аяксе вроде делают, хотя поймёт ли так Метрика Цель, как-то не ясно.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB