Валидация email

Тренажер по PHP для пользователей с начальным уровнем подготовки.

Тренажер PHP

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

Эти навыки необходимы для обеспечения безопасности приложений и предотвращения попадания некорректных данных в базу. Задания построены от простого к сложному: сначала мы изучим синтаксис, затем логику, и в конце соберем рабочие фрагменты кода. Удачи!

Список тем

1. Основы: Константа валидации

id: 39044_task1

Для проверки email в PHP используется функция filter_var с определенным фильтром. Впишите имя константы, отвечающей за валидацию email.

Заполните пропуски
$email = "user@example.com";

// Проверяем, является ли email корректным
if (filter_var($email, input1S)) {
    echo "Email корректен";
} else {
    echo "Ошибка в адресе";
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

2. Что пройдет валидацию?

id: 39044_task2

Распределите строки по категориям: те, что успешно пройдут проверку FILTER_VALIDATE_EMAIL, и те, что вернут false.

Перетяните элементы в соответствующие блоки
Валидные email
Невалидные email
admin@site.com
john.doe123@sub.domain.org
user-name@company.net
just_text_here
admin@.com
user@site com
@example.com
Сообщения
Проверить
Показать подсказку

3. Применение функции filter_var

id: 39044_task3

Заполните пропуски, чтобы код проверял переменную $email. Используйте саму функцию и правильный флаг валидации.

Нужно правильно расставить в пропуски предложенные варианты
$email = "test@test.com";

if (input1S($email, input2S)) {
    echo "Адрес принят";
} else {
    echo "Неверный формат";
}
filter_var
FILTER_VALIDATE_EMAIL
FILTER_CHECK_EMAIL
validate_var
check_input
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

4. Очистка (Sanitize) или Валидация (Validate)?

id: 39044_task4

Сопоставьте константы фильтрации с их действием. Важно понимать разницу: одна проверяет формат, другая вырезает опасные символы.

Сопоставьте строки в правой(нижней) части с соответствующими строками в левой(верхней) по порядковому номеру
Удаляет все символы, кроме букв, цифр и !#$%&'*+-=?^_`{|}~@.[]
Проверяет, соответствует ли строка формату email
FILTER_VALIDATE_EMAIL
FILTER_SANITIZE_EMAIL
Сообщения
Проверить
Показать подсказку

5. Что вернет filter_var при ошибке?

id: 39044_task5

Проанализируйте код. Переменная содержит строку, которая не является валидным email (нет символа @). Что именно вернет функция filter_var?

Выберите правильный вариант ответа
$email = "invalid-email-string";
$result = filter_var($email, FILTER_VALIDATE_EMAIL);

var_dump($result);
Сообщения
Проверить
Показать подсказку

6. Логика обработки формы

id: 39044_task6

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

Расставьте строки в правильном порядке
} else {
echo "Email валиден!";
    echo "Ошибка валидации";
$raw_email = $_POST['user_email'];
if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
} // конец if
$email = trim($raw_email);
Сообщения
Проверить
Показать подсказку

7. Исправьте ошибки в валидации

id: 39044_task7

В коде допущено две ошибки: одна синтаксическая в имени массива, другая логическая — используется фильтр очистки (SANITIZE) вместо валидации (VALIDATE) внутри условия if. Исправьте их.

Найдите ошибку и исправьте
<?php
$email = $_POSTS['email'];
if (filter_var($email, FILTER_SANITIZE_EMAIL)) {
    echo "Email корректен";
}
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

8. Безопасная обработка email

id: 39044_task8

Соберите код, который сначала очищает email от недопустимых символов, а затем проверяет его валидность. Игнорируйте строку с empty(), так как по условию задачи мы используем именно фильтры.

Перетяните в правильном порядке строки из одного блока в другой
$clean_email = filter_var($raw, FILTER_SANITIZE_EMAIL);
$raw = "  (user)@example.com ";
if (filter_var($clean_email, FILTER_VALIDATE_EMAIL)) {
    echo "Валидный: " . $clean_email;
if (empty($raw)) { echo "Пусто"; }
} else { echo "Ошибка"; }
Сообщения
Проверить
Показать решение на 3 сек.
Показать подсказку

9. Результат санитизации

id: 39044_task9

Фильтр FILTER_SANITIZE_EMAIL удаляет все символы, кроме букв, цифр и знаков !#$%&'*+-=?^_`{|}~@.[]. Напишите, какой именно строковый результат вернет код ниже. Обратите внимание, что скобки () являются недопустимыми символами для email в этом контексте.

Что должно получиться?
$email = "my(mail)@site.com";
echo filter_var($email, FILTER_SANITIZE_EMAIL);
Сообщения
Проверить
Показать подсказку

PHP: запуск кода в браузере

id: 39044_compiler
🐘
Запустить тренажёр (PHP)
НайтиКурс.Ру