Обязательные поля формы
Используя формы PHP, вы можете установить определенные поля как обязательные для заполнения и, если они не были заполнены перед отправкой, отображать сообщения об ошибках.
Обязательные и необязательные поля
Во всех предыдущих примерах мы работали только с необязательными полями — скрипты работали нормально даже, если вы не вводили никаких данных. Однако часто необходимо, чтобы поля ввода в форме были обязательными. Например, если вы регистрируетесь на новом веб-сайте покупок в Интернете, от вас могут потребовать указать свой адрес, чтобы заказанные товары приходили к именно к вам. Для обозначения обязательных полей ввода обычно используется маленькая звездочка (*)
.
В следующем коде добавим несколько новых переменных: $nameErr, $emailErr, $educationErr, и $websiteErr. Мы будем использовать их для отображения сообщений об ошибках в случае, если остаются пустыми поля обязательные для заполнения.
Этого можно добиться, используя операторы условных выражений if else
для каждой переменной $_POST. Эти операторы PHP с помощью функции empty()
проверяют, пуста ли переменная $_POST. Если какое-то из обязательных полей оказалось не заполнено, то мы сохраняем сообщение об ошибке внутри соответствующей переменной ошибки.
После заполнения всех полей формы, данные введенные пользователем, будем передавать в функцию test_input()
:
// определяем переменные и устанавливаем пустые значения
$nameErr = $emailErr = $genderErr = $websiteErr = "";
$name = $email = $education = $comment = $website = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Введите имя";
} else {
$name = test_input($_POST["name"]);
}
if (empty($_POST["email"])) {
$emailErr = "Введите Email";
} else {
$email = test_input($_POST["email"]);
}
if (empty($_POST["website"])) {
$website = "";
} else {
$website = test_input($_POST["website"]);
}
if (empty($_POST["comment"])) {
$comment = "";
} else {
$comment = test_input($_POST["comment"]);
}
if (empty($_POST["education"])) {
$educationErr = "Выберите образование";
} else {
$education = test_input($_POST["education"]);
}
}
?>
Отображение сообщений об ошибках
Если какое-то из полей оказалось не заполнено, тогда мы должны уведомить об этом пользователя и не отправлять форму на сервер. Для этого в HTML-форме после каждого обязательного поля поместим тэг "span" в котором будем выводить сообщение об ошибке, если пользователь пытается отправить форму, не заполнив обязательные поля:
Пример
Попробуй сам »<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Имя: <input type="text" name="name">
<span class="error">* <?php echo $nameErr;?></span>
E-mail: <input type="text" name="email">
<span class="error">* <?php echo $emailErr;?></span>
Веб-сайт: <input type="text" name="website">
<span class="error"><?php echo $websiteErr;?></span>
Комментарий: <textarea name="comment" rows="5" cols="40"></textarea>
Образование: <input type="radio" name="education" value="Институт">Институт
<input type="radio" name="education" value="Техникум">Техникум
<input type="radio" name="education" value="Другое">Другое
<span class="error">* <?php echo $educationErr;?></span>
<input type="submit" name="submit" value="Submit">
</form>
Результат выполнения кода:
Как видим скрипт не дает отправить форму, подсказывая, что поле не заполнено. Чтобы помочь и подсказать пользователю, какие поля являются обязательными, принято рядом с полем ставить красную звездочку. Вот теперь пользователь должен понять, какие поля являются обязательными к заполнению. Ну а созданный нами сценарий PHP не даст отправить на сервер форму с незаполненными обязательными полями.
Следующим шагом является проверка входных данных, а именно мы может проверить введен ли именно email в поле email, а не просто некая строка. Как это сделать — мы узнаем уже в следующей статье.