PHP

Валидация и очистка пользовательского ввода

Algonexys · 07.08.2026 · 👁 0

filter_var, проверка обязательных полей и экранирование при выводе — защита от XSS.

Код

<?php
declare(strict_types=1);

function validate(array $data): array
{
    $errors = [];

    $email = filter_var(trim($data['email'] ?? ''), FILTER_VALIDATE_EMAIL);
    if ($email === false) {
        $errors['email'] = 'Некорректный email';
    }

    $age = filter_var($data['age'] ?? '', FILTER_VALIDATE_INT, [
        'options' => ['min_range' => 14, 'max_range' => 120],
    ]);
    if ($age === false) {
        $errors['age'] = 'Возраст должен быть числом от 14 до 120';
    }

    $url = filter_var(trim($data['website'] ?? ''), FILTER_VALIDATE_URL);

    $name = trim($data['name'] ?? '');
    if (mb_strlen($name) < 2) {
        $errors['name'] = 'Имя слишком короткое';
    }

    return [
        'values' => compact('email', 'age', 'url', 'name'),
        'errors' => $errors,
    ];
}

// Экранирование при выводе в HTML
function e(?string $value): string
{
    return htmlspecialchars($value ?? '', ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
}

$result = validate($_POST);
if ($result['errors'] === []) {
    echo 'Привет, ' . e($result['values']['name']);
}