esc_url()

Проверяет и очищает URL
Функция WordPress
INT 2.8.0
WordPress Icon

Описание функции

Функция esc_url() проверяет и очищает URL-адрес. Она удаляет недопустимые символы и экранирует специальные символы, чтобы предотвратить возможные атаки и проблемы безопасности.

Эта функция также применяет фильтр clean_url к очищенному URL-адресу.

Использование

esc_url( string $url, string[] $protocols = null, string $_context = 'display' ): string

Функция esc_url() принимает три параметра: $url, $protocols и $_context.

$url (обязательный) — URL-адрес, который нужно очистить.

$protocols (необязательный) — массив допустимых протоколов. По умолчанию используется массив протоколов, возвращаемый функцией wp_allowed_protocols().

$_context (необязательный) — приватный параметр. Используется для указания контекста использования функции. По умолчанию установлено значение ‘display’, что означает использование функции для отображения URL-адреса.

Функция возвращает очищенный URL-адрес после применения фильтра clean_url. Если указанный URL-адрес содержит протокол, отличный от протоколов, указанных в параметре $protocols, или если URL-адрес содержит пустую строку, функция вернет пустую строку.

<?php
$url = 'https://example.com'; // URL-адрес, который нужно очистить
$protocols = array( 'http', 'https' ); // массив допустимых протоколов
$_context = 'display'; // контекст использования функции
$clean_url = esc_url( $url, $protocols, $_context ); // вызов функции esc_url()
echo $clean_url; // вывод очищенного URL-адреса
?>

В данном примере мы передаем URL-адрес ‘https://example.com’ в функцию esc_url(). Массив допустимых протоколов содержит только ‘http’ и ‘https’. Контекст использования функции установлен на ‘display’. Функция возвращает очищенный URL-адрес ‘https://example.com’, так как он соответствует допустимым протоколам.

Примеры использования

Очистка URL-адреса от недопустимых символов


$url = 'https://example.com/?param=123';
$clean_url = esc_url($url);
echo $clean_url;

Результат:


https://example.com/?param=123

Функция esc_url() очищает URL-адрес от недопустимых символов, таких как пробелы или специальные символы. В данном примере, URL-адрес https://example.com/?param=123 не содержит недопустимых символов, поэтому функция возвращает его без изменений.

Проверка и удаление небезопасных протоколов


$url = 'javascript:alert("XSS")';
$clean_url = esc_url($url);
echo $clean_url;

Результат:


''

Функция esc_url() также проверяет протоколы URL-адреса на безопасность. Если URL-адрес содержит небезопасный протокол, например, javascript:, функция возвращает пустую строку.

Преобразование относительного URL-адреса в абсолютный


$url = '/wp-content/uploads/image.jpg';
$clean_url = esc_url($url);
echo $clean_url;

Результат:


http://example.com/wp-content/uploads/image.jpg

Функция esc_url() также может преобразовывать относительные URL-адреса в абсолютные. В данном примере, относительный URL-адрес /wp-content/uploads/image.jpg преобразуется в абсолютный URL-адрес http://example.com/wp-content/uploads/image.jpg.

Добавление допустимых протоколов


$url = 'ftp://example.com/file.txt';
$protocols = array( 'http', 'https', 'ftp' );
$clean_url = esc_url($url, $protocols);
echo $clean_url;

Результат:


ftp://example.com/file.txt

Функция esc_url() позволяет добавлять допустимые протоколы для URL-адресов. В данном примере, URL-адрес ftp://example.com/file.txt содержит протокол ftp, который был добавлен в массив допустимых протоколов. Поэтому функция возвращает URL-адрес без изменений.

Использование функции esc_url() в шаблонах WordPress


<a href="<?php echo esc_url($url); ?>">Link</a>

Функцию esc_url() можно использовать в шаблонах WordPress для безопасного вывода URL-адресов. В данном примере, функция используется для очистки и экранирования переменной $url перед ее выводом в атрибуте href тега <a>.

Вопросы и ответы

Как использовать функцию esc_url() для очистки URL-адреса?

Функция esc_url() предназначена для проверки и очистки URL-адреса. Она принимает один обязательный параметр — $url, который представляет собой URL-адрес, который нужно очистить.

Пример использования функции esc_url():

$url = 'https://example.com';
$clean_url = esc_url( $url );
echo $clean_url;

В этом примере мы передаем URL-адрес «https://example.com» в функцию esc_url() и сохраняем очищенный URL-адрес в переменную $clean_url. Затем мы выводим очищенный URL-адрес на экран.

Какие протоколы поддерживает функция esc_url()?

Функция esc_url() поддерживает различные протоколы, которые можно использовать в URL-адресах. По умолчанию, если не указаны дополнительные протоколы, функция будет использовать протоколы, разрешенные в WordPress.

Пример использования функции esc_url() с указанием дополнительных протоколов:

$url = 'ftp://example.com';
$protocols = array( 'http', 'https', 'ftp' );
$clean_url = esc_url( $url, $protocols );
echo $clean_url;

В этом примере мы передаем URL-адрес «ftp://example.com» в функцию esc_url() и указываем дополнительные протоколы в массиве $protocols. Функция будет очищать URL-адрес только в случае, если он соответствует одному из указанных протоколов.

Какие URL-адреса не будут очищены функцией esc_url()?

Функция esc_url() не будет очищать URL-адрес, если он содержит протокол, отличный от разрешенных протоколов, или если URL-адрес содержит пустую строку.

Пример использования функции esc_url() с URL-адресом, содержащим недопустимый протокол:

$url = 'ftp://example.com';
$clean_url = esc_url( $url );
echo $clean_url;

В этом примере мы передаем URL-адрес «ftp://example.com» в функцию esc_url(). Так как протокол «ftp» не является разрешенным, функция вернет пустую строку.

Функция esc_url() также не будет очищать URL-адрес, если он содержит пустую строку:

$url = '';
$clean_url = esc_url( $url );
echo $clean_url;

В этом примере мы передаем пустую строку в функцию esc_url(). Функция вернет пустую строку, так как URL-адрес не содержит никакой информации.

Как использовать функцию esc_url() для безопасного отображения URL-адреса на странице?

Функция esc_url() в WordPress используется для проверки и очистки URL-адреса, чтобы предотвратить возможные атаки и проблемы с безопасностью. Она принимает два параметра: $url (обязательный) — URL-адрес, который нужно очистить, и $protocols (необязательный) — массив допустимых протоколов. По умолчанию используются протоколы, определенные в функции wp_allowed_protocols().

Пример использования функции esc_url() для безопасного отображения URL-адреса на странице:


$url = 'https://example.com';
echo esc_url( $url );

Как использовать функцию esc_url() для очистки URL-адреса перед сохранением в базу данных?

Функция esc_url() также может использоваться для очистки URL-адреса перед сохранением его в базу данных. В этом случае вместо контекста ‘display’ используется контекст ‘db’.

Пример использования функции esc_url() для очистки URL-адреса перед сохранением в базу данных:


$url = 'https://example.com';
$clean_url = esc_url( $url, null, 'db' );

Какие ошибки могут возникнуть при использовании функции esc_url()?

При использовании функции esc_url() могут возникнуть следующие ошибки:

  • Если указанный URL-адрес содержит протокол, отличный от тех, которые определены в массиве $protocols, функция вернет пустую строку.
  • Если указанный URL-адрес содержит пустую строку, функция также вернет пустую строку.

Какие альтернативы функции esc_url() существуют в WordPress?

В WordPress существуют и другие функции, которые могут быть использованы вместо или в дополнение к функции esc_url(). Некоторые из них:

  • esc_url_raw(): Очищает URL-адрес, но не применяет фильтр ‘clean_url’. Используется, когда требуется сохранить URL-адрес в исходном виде без изменений.
  • wp_kses_bad_protocol(): Удаляет недопустимые протоколы из URL-адреса.
  • wp_http_validate_url(): Проверяет, является ли URL-адрес допустимым.

Функция esc_url() в WordPress является незаменимым инструментом для безопасной проверки и очистки URL-адресов. Она позволяет избежать возможных атак и проблем с безопасностью, а также обеспечивает корректное отображение URL-адресов на странице. Помимо функции esc_url(), в WordPress также существуют другие функции, которые могут быть использованы для работы с URL-адресами. Используйте эти инструменты для обеспечения безопасности и правильной обработки URL-адресов в ваших проектах на WordPress.

Связанные элементы

  • Функция wp_allowed_protocols(): Возвращает массив разрешенных протоколов для использования в URL.
  • Функция esc_url_raw(): Очищает URL без применения фильтра «clean_url».
  • Функция wp_kses_bad_protocol(): Удаляет небезопасные протоколы из URL.
  • Функция wp_http_validate_url(): Проверяет, является ли URL допустимым.
Обсуждение