Очистка cookie комментариев с помощью функции sanitize_comment_cookies()
Функция sanitize_comment_cookies() предназначена для очистки cookie, отправленных пользователю. Она работает только в том случае, если cookie уже созданы для этого пользователя. Основное назначение — выполнять очистку cookie после их отправки, перед использованием в других частях кода.
Основные моменты
- Функция:
sanitize_comment_cookies(); - Возвращаемое значение:
null(ничего не возвращает).
Хуки, используемые в функции
При выполнении этой функции используются следующие хуки:
pre_comment_author_name— фильтрует имя автора комментария перед его установкой.pre_comment_author_email— фильтрует email автора комментария перед его установкой.pre_comment_author_url— фильтрует URL автора комментария перед его установкой.
Применение функции
Функция sanitize_comment_cookies() обычно вызывается тогда, когда необходимо очистить данные, которые могут быть извлечены из cookie. Например, если мы получаем данные имени, email и URL автора комментария для неавторизованного пользователя, к которым мы обращаемся через функцию wp_get_current_commenter(), нужно предварительно очистить их перед выводом.
Пример использования
// Очищаем данные
sanitize_comment_cookies();
// Теперь данные безопасны для использования
$commenter = wp_get_current_commenter();
// Выводим данные
echo $commenter['comment_author'];
echo $commenter['comment_author_email'];
echo $commenter['comment_author_url'];
Как работает sanitize_comment_cookies()
Вот код самой функции, которая выполняет очистку cookie:
function sanitize_comment_cookies() {
if ( isset( $_COOKIE['commentauthor' . COOKIEHASH] ) ) {
$comment_author = apply_filters('pre_comment_author_name', $_COOKIE['commentauthor' . COOKIEHASH]);
$comment_author = wp_unslash($comment_author);
$comment_author = esc_attr($comment_author);
$_COOKIE['comment_author_' . COOKIEHASH] = $comment_author;
}
if ( isset( $_COOKIE['comment_author_email_' . COOKIEHASH] ) ) {
$comment_author_email = apply_filters('pre_comment_author_email', $_COOKIE['comment_author_email_' . COOKIEHASH]);
$comment_author_email = wp_unslash($comment_author_email);
$comment_author_email = esc_attr($comment_author_email);
$_COOKIE['comment_author_email_' . COOKIEHASH] = $comment_author_email;
}
if ( isset( $_COOKIE['comment_author_url_' . COOKIEHASH] ) ) {
$comment_author_url = apply_filters('pre_comment_author_url', $_COOKIE['comment_author_url_' . COOKIEHASH]);
$comment_author_url = wp_unslash($comment_author_url);
$_COOKIE['comment_author_url_' . COOKIEHASH] = $comment_author_url;
}
}
Что делает этот код?
-
Проверка наличия cookie: Сначала функция проверяет, существуют ли cookie для автора комментария, email и URL.
-
Фильтрация данных: Если cookie существуют, она применяет фильтры для очистки переданных значений, используя хуки.
-
Очистка данных: Затем данные очищаются, чтобы избежать возможного вредоносного ввода. Для этого используется функция
esc_attr(), которая удал��ет потенциально опасные символы. -
Сохранение очищенных данных: Очищенные данные записываются обратно в cookie, чтобы их можно было использовать безопасно.
Заключение
Функция sanitize_comment_cookies() — важный инструмент для обеспечения безопасности данных, получаемых от пользователей через комментарии на вашем сайте WordPress. Используя её, вы можете быть уверены, что данные безопасны и не содержат вредоносных элементов.