Ru-Board.club
← Вернуться в раздел «Web-программирование»

» Насколько правильна такая проверка полей в форме?

Автор: Focusrite
Дата сообщения: 04.03.2016 15:45
По этому принципу, сделал проверку правильности ввода имейла:
http://forum.ru-board.com/topic.cgi?forum=31&topic=1935&start=0

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

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

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

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

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

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

Как лучше тогда это сделать?
Автор: bordellinoff
Дата сообщения: 05.03.2016 11:55
@Focusrite
Вместо alert() показывайте HTML-сообщение, что-то вроде:

if ( isInvalidEmail ) {
document.getElementById( 'DIV_ERROR_MESSAGE' ).classList.toggle( 'visible' );
    
или

document.getElementById( 'DIV_ERROR_MESSAGE' ).setAttribute( 'style', 'display:block' );

или

jQuery( '#DIV_ERROR_MESSAGE' ).show();
}
Автор: Milienko
Дата сообщения: 07.04.2016 13:12
Недавно тоже озадачился правильностью заполнения полей.
Мне понравилось следующее решение:

К примеру, есть поле координаты, на которое необходимо поставить правило заполнения в виде ХХХ:ХХХ. Результат выглядит так:

<label for="kor">Координаты:</label><font color="#ff0000">*</font> <input type="text" name="kor" size="8" pattern="[0-9]{3}:[0-9]{3}" required/>

Автор: stupom
Дата сообщения: 18.04.2016 16:40

Цитата:
Как лучше тогда это сделать?

Ну, во-первых, всё, что проверяется на стороне браузера/клиента должно делаться только для удобства клиента и только методами не блокирующими доступ к функциональности в случае, если у клиента не работает JavaScript или он "не той системы" и т.п.
Во-вторых, в JavaScript есть alert() который никто в здравом уме не блокирует, его и надо использовать для вывода сообщений об ошибках.
Т.е. обработчик отправки формы (onsubmit) проверяет поля и, если выявляет ошибку, то выдаёт alert() и возвращает false.
В третьих, на стороне сервера проверяете всю форму не зависимо от тех проверок, которые были сделаны JavaScript-ом в браузере.

Страницы: 1

Предыдущая тема: JavaScript picData(binary) decrypt<->encrypt


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.