Очистка cookie комментариев: функция sanitize_comment_cookies()

Очистка 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;
}

}

Что делает этот код?

  1. Проверка наличия cookie: Сначала функция проверяет, существуют ли cookie для автора комментария, email и URL.

  2. Фильтрация данных: Если cookie существуют, она применяет фильтры для очистки переданных значений, используя хуки.

  3. Очистка данных: Затем данные очищаются, чтобы избежать возможного вредоносного ввода. Для этого используется функция esc_attr(), которая удал��ет потенциально опасные символы.

  4. Сохранение очищенных данных: Очищенные данные записываются обратно в cookie, чтобы их можно было использовать безопасно.

Заключение

Функция sanitize_comment_cookies() — важный инструмент для обеспечения безопасности данных, получаемых от пользователей через комментарии на вашем сайте WordPress. Используя её, вы можете быть уверены, что данные безопасны и не содержат вредоносных элементов.

Leave a Reply

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