Разумно ли сделать некоторую проверку формы через Javascript перед отправкой? - PullRequest
3 голосов
/ 13 июля 2011

Мне очень нравится идея проверки форм на стороне клиента, прежде чем делать это на стороне сервера.Если проверка клиента прошла успешно, я могу использовать Javascript для отправки формы.

Однако я слышал, что некоторые специализированные браузеры, такие как браузеры для слабовидящих, не поддерживают Javascript.Поэтому эти пользователи не смогут отправлять мои формы.Поэтому я должен избегать того, о чем я только что думал, или все в порядке?

РЕДАКТИРОВАТЬ: (в ответ на ответы): я думаю, я не объяснил это, но я планировалпри выполнении проверки на стороне сервера в дополнение к стороне клиента.Извините!

Спасибо

Ответы [ 9 ]

4 голосов
/ 13 июля 2011

Javascript - это приятное прикосновение к проверке. Это позволяет пользователю сразу узнать, что что-то не так, плюс минимизирует потенциальные обращения к базе данных.

Если есть браузеры, которые отключают JavaScript по причинам доступности, вам не о чем беспокоиться. Вот в чем помогает проверка на стороне сервера.

Так что вы должны использовать оба, и тестировать с включенным или выключенным JavaScript. НИКОГДА не используйте javascript в качестве единственного валидатора - вы можете просто отключить javascript в своем браузере, и данные POST пройдут!

3 голосов
/ 13 июля 2011

Вы должны выполнить как проверку на стороне клиента, так и проверку на стороне сервера.Все, что вы поймете с помощью проверки на стороне клиента, - это возможность улучшить взаимодействие с пользователями и точно сказать им, что отсутствует или нет, прежде чем они отправят форму.Если по какой-либо причине javascript не включен, вы все равно будете проверять на сервере (как всегда) и можете возвращать ошибки через ответ формы с сервера, если это необходимо.

Таким образом, это всегдахорошая идея использовать проверку на стороне клиента, если она доступна.

1 голос
/ 13 июля 2011

Проверка на стороне клиента часто улучшает взаимодействие с пользователем, поскольку пользователь может сразу увидеть, действительны ли его данные.

Если это простая проверка, такая как сопоставление с образцом или проверка длины для паролей, обязательно сделайте это. Но, конечно, это не замена проверки на стороне сервера, это никак не средство безопасности. Никогда доверять вводу пользователя.

Интеграция проверки на стороне клиента в ненавязчивом способе , так что отправка формы все еще работает, если JS выключен.

1 голос
/ 13 июля 2011

Является ли проверка на стороне клиента умной? Да, чистый ввод лучше для производительности, чем ввод, который выдает ошибку.

Отличный UX? Да, для пользователя важно получить быстрый, релевантный отзыв.

Safe? Нет, совсем нет. Хакеры не используют ваш интерфейс для взлома вашего сайта.

Все больше и больше браузеров могут выбирать сайты для запуска JS.

И наконец, если вас беспокоит равный доступ, лучше всего создавать доступные версии сайта.

0 голосов
/ 13 июля 2011

Не уверен, что мы можем сказать, что умный обрабатывает «контроль» формы перед отправкой: это «единственный» комфорт клиента, так как эти элементы управления ... просто недействительны от точка зрения безопасности. Таким образом, это добавляет усилия по кодированию без дополнительной выгоды с точки зрения безопасности. Но это добавляет усилий для комфорта клиента. И ЭТО умный.

Простой способ: Нет управления на стороне клиента вообще, только на стороне сервера. Не нужно, чтобы на стороне клиента был включен js.
Это точка, которая должна быть всегда включена и действительна полная безопасность.

Промежуточный путь: Реализация простого способа и добавление некоторых javascript «элементов управления» сверху, «кодирование вручную» или использование библиотек js. Это очень изощренный способ, так как он добавляет слой поверх существующего кода ядра сервера и, как правило, означает некоторые изменения или рефакторинг кода на стороне сервера. Так что, на мой взгляд, это худший путь. Но это хороший способ изучить и понять обмены между клиентом и сервером. Больно, но полезно.

Лучший способ: Сосредоточьте все свои усилия на проверке на стороне сервера, но убедитесь, что с начальной точки кодирования можно внедрить и то, что «приятно иметь», например. на стороне клиента хорошие "элементы управления". Это означает, что вы должны подумать о своей архитектуре кода, прежде чем начинать писать какие-либо строки. Как это сделать ? используйте закодированные формы Ajax на стороне сервера. Который предлагает способ кодирования в идеале с конкретными классами формы php. Например, ZendFramework предоставляет такие возможности, используя либо dojo, либо jQuery.

0 голосов
/ 13 июля 2011

Проверка на стороне клиента выполняется путем перехвата обычного события отправки и возврата значения true или false в зависимости от того, является ли форма действительной.Таким образом, когда JavaScript не включен, отправка не перехватывается и продолжается в обычном режиме.

Изящно, к счастью, изящно деградировать - одна из самых простых вещей:)

0 голосов
/ 13 июля 2011

Браузеры без JavaScript вообще не будут выполнять JavaScript, поэтому они все равно смогут отправить вашу форму.Не волнуйся.

0 голосов
/ 13 июля 2011

«И то, и другое» - это ответ. Проверяйте клиентскую часть как удобство и способ улучшить взаимодействие с пользователем, но вы всегда должны проверять серверную часть.

0 голосов
/ 13 июля 2011

Всегда лучше, чтобы данные "Cleaner" передавались на сервер. Предотвращает ошибки и вредоносные данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...