Функция sanitize_user()
в WordPress используется для очистки имени пользователя (логина) от небезопасных символов. Это важно для обеспечения безопасности и правильной работы систем авторизации.
sanitize_user( string $username, bool $strict = false ): string
Эта функция удаляет теги HTML, процентно закодированные символы, HTML-сущности и другие небезопасные символы. В случае использования параметра $strict
, функция оставляет только алфавитные символы, цифры, символы подчеркивания, пробелы, точки, дефисы и символы собаки (@).
После очистки, функция передает отфильтрованное имя пользователя, исходное имя и значение параметра $strict
в фильтр sanitize_user
, что позволяет разработчикам дополнительно модифицировать результат с помощью фильтров.
Параметры:
- $username (строка) — обязательный параметр, содержит имя пользователя, которое необходимо очистить.
- $strict (логический) — необязательный параметр, если установлен в
true
, удаляются все символы, кроме допустимых: a-z, 0-9, _ (подчеркивание), пробел, точка (.), дефис (-) и собака (@). По умолчанию:false
.
Возвращаемое значение
Возвращается строка с очищенным именем пользователя.
Пример 1: Простая очистка имени пользователя
<?php
$username = sanitize_user(' marmelada ');
echo $username; // результат: 'marmelada'
?>
Этот пример демонстрирует стандартное использование функции. Лишние пробелы вокруг имени пользователя будут удалены, а само имя останется неизменным, поскольку оно не содержит небезопасных символов.
Пример 2: Очистка имени пользователя с использованием $strict = true
<?php
$string = 'Alex-{<>}()[]+_!@';
$sanitized = sanitize_user($string, true);
echo $sanitized; // результат: 'Alex-__@'
?>
Здесь параметр $strict
установлен в true
, что удаляет все символы, кроме допустимых. В результате, небезопасные символы {<>}()+!
были удалены, оставив только безопасные символы Alex-__@
.
Пример 3: Очистка имени пользователя с кириллическими символами
<?php
$username = 'Логин_пользователя123';
$sanitized = sanitize_user($username);
echo $sanitized; // результат: 'Логин_пользователя123'
$strict_sanitized = sanitize_user($username, true);
echo $strict_sanitized; // результат: ''
?>
Функция sanitize_user()
по умолчанию пропускает кириллические символы, если параметр $strict
не используется. Однако, при включении строгого режима, кириллические символы будут удалены, так как функция поддерживает только латинские символы и цифры в режиме strict.
Хуки
Функция также использует фильтр sanitize_user
, который позволяет изменять результат до его возврата:
add_filter('sanitize_user', function($sanitized_username, $raw_username, $strict) {
// Логика модификации $sanitized_username
return $sanitized_username;
}, 10, 3);
Этот фильтр предоставляет возможность дополнительно модифицировать очищенное имя пользователя, что может быть полезно для реализации специфических требований безопасности.
Заключение
Функция sanitize_user()
— это эффективный способ очистки логинов пользователей в WordPress, особенно при работе с регистрацией и авторизацией. Она гарантирует, что имена пользователей соответствуют стандартам безопасности, что снижает вероятность уязвимостей, связанных с неправильной обработкой пользовательских данных.