Вы когда-нибудь задумывались, сколько времени уходит на проверку формы PHP при разработке веб-формы?
Код проверки формы PHP – это набор правил проверки, который позволяет вам быстро и без особых усилий создавать проверку на стороне сервера для форм PHP. Проверка формы действительно важна для динамических веб-страниц.
Большая часть всех ведущих веб-сайтов сегодня работает на PHP. Поскольку веб-сайты больше не сводятся к информационным шлюзам и становятся бизнес-инструментами, вам следует выйти за рамки стандартных функциональных возможностей при разработке веб-страниц. Помимо посетителей и пользовательского опыта вашего веб-сайта, проверка веб-формы требует большей самоотдачи, поскольку она косвенно создает теплые отношения с потенциальными клиентами. Однако многие из нас игнорируют этот факт. В результате получаются сложные и неприятные веб-формы, которые предполагают негативный опыт, вредоносное манипулирование базой данных и сбой системы.
К счастью, проверка формы PHP – это не ракетостроение. PHP включает в себя множество отличных библиотек и встроенных проверок. Это просто куча проверок с использованием универсального скрипта проверки формы PHP.
Универсальный скрипт проверки формы PHP
Универсальный скрипт проверки формы PHP, такой как fi1a/validation, предназначен для упрощения процесса добавления проверки в ваши формы PHP. Единственное, что вам нужно сделать, это связать требование проверки каждого элемента вашей формы с доступным набором “дескрипторов проверки”. “Дескриптор проверки” – это строка, указывающая тип проверки, которая должна быть выполнена. Например, “alpha” указывает, что разрешены только буквенные символы, а “num” предназначен для проверки числовых данных. В таблице ниже перечислены общие общие дескрипторы проверки формы PHP:
Дескрипторы проверки | Описание |
req | Поле является обязательным |
num | Проверяет числовые данные |
alnum | Поле должно содержать только буквенный или цифровой символ |
Проверьте действительный идентификатор электронной почты | |
alpha | Проверка алфавитных данных |
lt=??? | Убедитесь, что входные данные меньше переданного значения |
gt=??? | Убедитесь, что входные данные больше переданного значения |
maxlen=??? | Проверьте длину ввода на максимальную |
minlen=??? | Убедитесь, что длина ввода соответствует требуемому минимуму |
Важность проверки формы PHP
Основная цель кода проверки формы PHP – убедиться, что пользователь предоставил все необходимые данные и в правильном формате, чтобы успешно продолжить запрошенную операцию. PHP-код проверяет значения, введенные пользователем в форму, и, если они не соответствуют указанным критериям, они возвращаются обратно в форму со списком полей, вызывающих нарушения, вместе с сообщениями об ошибках. Неверный пользовательский ввод может привести к непредвиденным ошибкам в будущей обработке. Таким образом, PHP включает в себя бесчисленное множество встроенных функций проверки для проверки вводимых пользователем данных. Вот некоторые из встроенных функций проверки формы PHP:
Фильтры для проверки | Описание |
FITER_VALIDATE_DOMAIN | Проверяет длину метки доменного имени |
FILTER_VALIDATE_EMAIL | Проверяет адрес электронной почты |
FILTER_VALIDATE_FLOAT | Проверяет данные как float и переводит в float при успешном завершении. |
FILTER_VALIDATE_INT | Проверяет данные как целочисленные и преобразует в целое число при успешном выполнении. |
FILTER_VALIDATE_IP | Проверяет данные как IP-адрес |
FILTER_VALIDATE_MAC | Проверяет данные как MAC-адрес |
FILTER_VALIDATE_REGEXP | Проверяет данные на соответствие регулярному выражению |
FILTER_VALIDATE_URL | Проверяет данные как URL |
Пример: проверка формы с помощью PHP
Давайте рассмотрим пример создания и проверки формы с использованием PHP и HTML. Мы создадим простую форму с использованием HTML и обработаем, а также проверим содержимое формы с помощью функций проверки формы PHP. Прежде чем создавать HTML-форму, мы должны решить, какой HTTP-метод использовать в HTTP-запросе. Среди множества методов HTTP-запроса программисты обычно предпочитают использовать методы GET и POST для форм. Поскольку мы собираемся отправлять конфиденциальные данные, такие как электронные письма, с HTTP-запросом, мы переходим к POST. Метод GET можно использовать, когда мы хотим получить данные с сервера. Приведенный ниже пример иллюстрирует HTML-скрипт для простой формы:
Когда пользователь заполняет форму выше и нажимает кнопку отправки, входные данные отправляются для обработки в файл PHP, “action.php ” показано ниже:
Как мы можем видеть, сценарии проверки формы PHP в приведенном выше примере проверяют входные данные формы, чтобы избежать ошибок обработки.
Давайте рассмотрим, как может возникнуть ошибка. Предположим, что пользователь пропустил какое-либо из полей в форме выше. PHP-код проверяет, установлены ли все переменные с помощью функции empty(). Эта функция предназначена для проверки того, являются ли данные аргументы пустыми или нет. Вот описание функции:
Функция Empty() | |
Синтаксис
|
empty ( $var) |
Значения отображаются как пустое значение:
|
NULL
FALSE 0 – 0 как целое число “0” – 0 в виде строки 0.0 – 0 в качестве значения с плавающей запятой “” – пустая строка array() – пустой массив |
Если не заданы переменные email, name, phone или gender, PHP-скрипт выдаст сообщение об ошибке “—– field is required”.Если первая проверка завершается неудачей, скрипт прекращает выполнение последующих правил проверки.
Когда пустой ($_POST[$key] && in_array($key, $validateArray)) не является пустым, PHP-скрипт переходит к дальнейшей проверке.
Затем мы проверили электронное письмо с помощью функции filter-var () и флага FILTER_VALIDATE_EMAIL. Если электронное письмо неверно, сценарий проверки возвращает false.
Последняя проверка формы PHP в приведенном выше сценарии – проверка номера телефона. Скрипт проверяется с помощью filter-var () и флага FILTER_VALIDATE_INT. Этот метод может проверять любой целочисленный ключ (например, groupId, userId и т. д.) В метке времени, базе данных и т. д. Основное преимущество этой функции заключается в том, что она преобразует строковые числа “15”, например, в фактические целые числа 15.
Поскольку мы сохранили сообщения об ошибках в сеансе, любая ошибка проверки возникает в ation.php страница перенаправит страницу обратно на страницу формы.
PHP-скрипт на странице формы повторяет сообщение сеанса, как показано ниже, и отображает пользователю сообщение об ошибке:
Проверка формы PHP и проверка безопасности формы
Большинство людей думают, что проверка формы и проверка безопасности формы – это одно и то же. Однако безопасность формы – это отдельный процесс, который следует обрабатывать вместе с проверкой формы PHP. Кроме того, проверка безопасности формы должна быть добавлена к проверке формы, чтобы предотвратить вредоносные эксплойты веб-страниц. Неправильная проверка пользовательского ввода может увеличить риск уязвимостей в системе безопасности. Злоумышленники могут воспользоваться этой возможностью и нацелиться на вашу веб-страницу с помощью следующих атак:
- Внедрение заголовка – включает отправку спама по электронной почте с вашего веб-сервера.
- SQL–инъекция – намеревается повредить вашу базу данных
- Атаки с использованием межсайтовых скриптов – предполагает размещение вредоносных данных на вашем сайте.
Пример для предотвращения XSS с использованием проверки формы PHP
Давайте подробно рассмотрим атаку XSS и то, как предотвратить ее с помощью проверки формы PHP и проверки безопасности. Согласно нашей приведенной выше странице формы, когда пользователь вводит имя, оно будет сохранено в базе данных без какой-либо проверки. Представьте, что злоумышленник вводит следующий скрипт в поле name:
<script>location.href=’https://www.xyz.com ‘</script> |
В результате вредоносный скрипт сохраняется в базе данных, а веб-страница отображает скрипт в качестве имени. Затем каждый пользователь, посетивший веб-страницу, будет перенаправлен на сайт злоумышленника. Именно так хакеры выполняют межсайтовую скриптовую атаку (XSS):
С помощью PHP довольно просто защитить нашу веб-страницу от XSS-атаки. Вот пример:
функция htmlspecialchars() PHP экранирует HTML-код и преобразует входные данные, как показано ниже:
Обработка входных данных перед проверкой |
<script>location.href=’https://www.xyz.com ‘</script> |
Обработка входных данных после проверки |
<script>расположение.href=’https://www.xyz.com ‘</script> |
Кроме того, функция trim() удаляет лишние пробелы; следовательно, дополнительные пробелы во входных данных не будут занимать место в базе данных.
Лучше перестраховаться, чем потом сожалеть
Проверка формы PHP – это крошечные шаги, которые могут помочь пользователю заполнить форму легко и как можно быстрее. Кроме того, они позволяют проводить необходимую проверку пользовательского ввода, не отправляя ничего в базу данных. Когда пользователь заполняет форму, если неясно, что он делает не так, и нет никакого сообщения, которое могло бы его направить, тогда он, скорее всего, сдастся и перейдет на другой веб-сайт. Выполнение проверки данных формы во время ее ввода означает, что пользователь может быть точным и уверенным в своем вводе, и это позволяет избежать нежелательных разочарований.