Учебное пособие по базовой проверке формы PHP

Учебное пособие по базовой проверке формы PHP

Что такое проверка формы?

Проверка формы — это процесс оценки полей в соответствии с определенными требованиями, которые мы установили.

Например, мы можем потребовать, чтобы пароль пользователя был длиннее 7 букв и содержал прописные, строчные и специальные символы, а также цифры.

Более детально ознакомиться можно здесь fi1a/validation

ПРИМЕЧАНИЕ Не существует универсального решения для проверки формы. Все зависит от типа используемых вами полей, того, что вы хотите оценить и насколько тщательной должна быть ваша проверка.

Простая проверка формы

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

Если вы следовали курсу, создайте новый файл с именем form-validation.php в папке /xampp/htdocs/PHPProjects/ . Если нет, подойдет любой пустой файл .php .

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

Пример: простая форма
<html>  <body>    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">        <p><button>Submit</button></p>  </form>

Мы напишем наш PHP-скрипт прямо под этой формой и добавим любые другие элементы, которые нам понадобятся на протяжении всего урока.

Как проверить отправку формы

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

Но поскольку наша форма отправляется на текущую страницу, мы не узнаем, что она была отправлена. Простой способ проверить — посмотреть, отправил ли сервер запрос на страницу.

Для этого мы можем использовать суперглобальную переменную $_SERVER[‘REQUEST_METHOD’] и проверить ее результат. Если результат совпадает с методом нашей формы, форма была отправлена.

Пример:
<html>  <body>    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">      <p><button>Submit</button></p>  </form>    <?php    // Has the form been submitted  if($_SERVER['REQUEST_METHOD'] == 'POST') {      // Validations here    echo "Form has been submitted";  }    ?>  

Если мы запустим пример в браузере и нажмем кнопку «Отправить», появится сообщение, определенное выше.

Мы должны обрабатывать форму только в том случае, если она была отправлена, поэтому любая дальнейшая обработка должна происходить внутри тела оператора if.

ПРИМЕЧАНИЕ Мы можем проверить отправку формы, даже если страница обработки не является текущей страницей. Это легко сделать и добавляет некоторую безопасность.

 

 

Как проверить поле с минимальным требованием символов

Теперь мы проверим поля формы, поэтому добавим в форму текстовое поле «имя пользователя» с меткой.

Пример: текстовое поле
<html>  <body>    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">      <p>      <label for="username">Name*</label><br>      <input type="text" name="username">    </p>      <p><button>Submit</button></p>  </form>

Поскольку мы будем выполнять несколько проверок, мы должны сохранить ввод, который мы получаем для поля, в переменной.

Пример: сохранить ввод
<?php    // Has the form been submitted  if($_SERVER['REQUEST_METHOD'] == 'POST') {      // Get & store username    $username = $_POST['username'];  }    ?>  

В нашем примере мы хотим, чтобы имя пользователя было обязательным вводом и содержало минимум 3 символа.

Поэтому мы хотим использовать следующие встроенные методы PHP для проверки.

  • empty() проверит, пусто поле или нет.
  • strlen() сообщит нам, сколько символов содержит строка.

Мы можем объединить две оценки в одном блоке условий.

Пример: не пусто и больше 3 символов
<?php    // Has the form been submitted  if($_SERVER['REQUEST_METHOD'] == 'POST') {      // Username    $username = $_POST['username'];      // Validate empty or less than 3 characters    if(empty($username) || strlen($username) < 3) {      echo "<p>Error: Name requires a minimum of 3 characters</p>";    }  }    ?>  

Если вы запустите пример в браузере и отправите форму с пустым полем или содержащей менее 3 символов, будет напечатано сообщение об ошибке.

Как проверить поле электронной почты с помощью встроенного в PHP метода filter_var()

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

Давайте добавим поле электронной почты в форму нашего примера.

Пример:
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">    <p>      <label for="username">Name*</label><br>      <input type="text" name="username">    </p>      <p>      <label for="email">Email*</label><br>      <input type="email" name="email">    </p>      <p><button>Submit</button></p>  </form>

PHP предоставляет нам метод filter_var() , который помогает выполнять проверки с помощью фильтров.

В качестве первого аргумента метод ожидает строку, которую мы хотим отфильтровать. Второй аргумент — это фильтр, который мы хотим применить, в данном случае это FILTER_VALIDATE_EMAIL .

Пример: проверка фильтра электронной почты
filter_var(email_address, FILTER_VALIDATE_EMAIL);

Метод filter_var() вернет true, если электронная почта действительна, и false, если нет. Так что наша оценка может быть простой (не) тест.

Мы также хотим, чтобы адрес электронной почты был обязательным, поэтому мы можем выполнить проверку empty() вместе с проверкой фильтра в том же блоке условия.

Пример: очистить и отфильтровать оценку
<?php    // Has the form been submitted  if($_SERVER['REQUEST_METHOD'] == 'POST') {      // Username    $username = $_POST['username'];      // Validate empty or less than 3 characters    if(empty($username) || strlen($username) < 3) {      echo "<p>Error: Name requires a minimum of 3 characters</p>";    }      // Email    $email = $_POST['email'];      // Validate empty or email    if(empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) {      echo "<p>Error: Please provide a valid email address</p>";    }  }    ?>  

Позже мы снова воспользуемся методом filter_var() , когда будем дезинфицировать ввод электронной почты.

Как проверить поле пароля с помощью регулярного выражения (RegEx)

Пока мы сделали только базовую проверку. Но формы часто требуют более сложных методов проверки, таких как проверка определенных символов в пароле.

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

Пример: поле пароля
<html>  <body>    <form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>">      <p>        <label for="username">Name*</label><br>        <input type="text" name="username">      </p>        <p>        <label for="email">Email*</label><br>        <input type="email" name="email">      </p>        <p>        <label for="password">Password*</label><br>        <input type="password" name="password">      </p>        <p><button>Submit</button></p>  </form>

Для нашего примера пароля нам нужен следующий список требований.

  • Минимум 7 символов.
  • Минимум 1 заглавная буква.
  • Минимум 1 номер.
  • Минимум 1 специальный символ (!@#$%^&*-)

Для такой проверки нам нужно будет использовать регулярное выражение ( RegEx ).

Но что такое регулярное выражение?

Регулярное выражение — это строка текста, которая была закодирована определенным образом, чтобы помочь нам найти определенные шаблоны в тексте. Шаблоны в нашем случае — это заглавные буквы, цифры и специальные символы.

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

Мы начнем с определения переменной с именем $pattern , которая будет содержать наше регулярное выражение. Помните, что RegEx — это строка, поэтому мы должны заключить ее в кавычки.

Пример: переменная для хранения шаблона регулярного выражения
<?php    $pattern  = "";    ?>  

Разделители:

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

Мы указываем разделитель с помощью / (косая черта) как в начале, так и в конце шаблона.

Пример: разделители
<?php    $pattern  = "/  /";    ?>  

ПРИМЕЧАНИЕ Здесь мы используем косую черту в качестве разделителей, но PCRE (синтаксис, который использует PHP) также поддерживает следующие разделители.

  • # (Символ решетки)
  • % (процентные символы)
  • + (символ плюса)
  • ~ (Символ Тильды)

Начать конец:

Далее мы определяем начало и конец шаблона. Мы используем ^ для начала и $ для конца.

Пример: начало и конец шаблона
<?php    $pattern  = "/^$/";    ?>
Понравилась статья? Раскажите друзьям:
Уважаемые посетители! Пожалуйста, оставляйте свои отзывы или комментарии. Они могут помочь другим пользователям.
Просмотров Просмотров: 526 ОтзывыОтзывы (0)

Оставте отзыв

Ваш адрес email не будет опубликован. Обязательные поля помечены *