PHP
Валидация и очистка пользовательского ввода
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']);
}