- Описание функции
- Примеры использования
- Очистка URL-адреса от недопустимых символов
- Проверка протокола URL-адреса
- Удаление нежелательных протоколов
- Добавление допустимых протоколов
- Вопросы и ответы
- Как работает функция sanitize_url()?
- Какие протоколы поддерживает функция sanitize_url()?
- Какие символы и специальные символы допустимы в URL?
- Какие символы и специальные символы не допустимы в URL?
- Какие проверки безопасности выполняет функция sanitize_url()?
- Какие ошибки могут возникнуть при использовании функции sanitize_url()?
- Какие альтернативы существуют для функции sanitize_url()?
- Связанные элементы
Описание функции
Функция sanitize_url() предназначена для очистки URL-адреса перед его использованием в базе данных или для перенаправления. Она применяет необходимые фильтры и проверки, чтобы убедиться, что URL-адрес является безопасным и соответствует определенным требованиям.
Использование
sanitize_url( string $url, string[] $protocols = null ): string Функция sanitize_url() принимает два параметра: $url (обязательный) — URL-адрес, который нужно очистить, и $protocols (необязательный) — массив допустимых протоколов. Если параметр $protocols не указан, то используется значение по умолчанию из функции wp_allowed_protocols().
$url(string) — Обязательный. URL-адрес, который нужно очистить.$protocols(string[]) — Необязательный. Массив допустимых протоколов. По умолчанию используется значение из функцииwp_allowed_protocols().
Функция возвращает очищенный URL-адрес после применения функции esc_url() с контекстом ‘db’.
<?php
$url = 'https://example.com';
// Очистка URL-адреса
$clean_url = sanitize_url( $url );
// Вывод очищенного URL-адреса
echo $clean_url;
?> В приведенном выше примере кода переменная $url содержит URL-адрес, который нужно очистить. Функция sanitize_url() применяется к переменной $url и возвращает очищенный URL-адрес, который затем выводится с помощью функции echo.
Примеры использования
Очистка URL-адреса от недопустимых символов
$url = 'http://example.com/?foo=1&bar=2';
$clean_url = sanitize_url($url);
echo $clean_url;
Результат:
http://example.com/?foo=1&bar=2 Функция sanitize_url() очищает URL-адрес от недопустимых символов, таких как пробелы или специальные символы. В данном примере, URL-адрес http://example.com/?foo=1&bar=2 очищается и возвращается без изменений.
Проверка протокола URL-адреса
$url = 'http://example.com';
$clean_url = sanitize_url($url);
echo $clean_url;
Результат:
http://example.com Если URL-адрес не содержит допустимый протокол (например, «http://» или «https://»), то функция sanitize_url() автоматически добавляет протокол «http://». В данном примере, URL-адрес http://example.com проходит проверку и возвращается без изменений.
Удаление нежелательных протоколов
$url = 'ftp://example.com';
$clean_url = sanitize_url($url);
echo $clean_url;
Результат:
example.com Если URL-адрес содержит недопустимый протокол (например, «ftp://»), то функция sanitize_url() удаляет протокол и возвращает только доменное имя. В данном примере, URL-адрес ftp://example.com содержит недопустимый протокол «ftp://», поэтому он удаляется и возвращается только доменное имя «example.com».
Добавление допустимых протоколов
$url = 'custom://example.com';
$protocols = array('http', 'https', 'custom');
$clean_url = sanitize_url($url, $protocols);
echo $clean_url;
Результат:
custom://example.com При использовании второго параметра функции sanitize_url() можно указать массив допустимых протоколов. Если URL-адрес содержит протокол, который не указан в этом массиве, то он будет удален. В данном примере, URL-адрес custom://example.com содержит допустимый протокол «custom://», поэтому он остается без изменений.
Вопросы и ответы
Как работает функция sanitize_url()?
Функция sanitize_url() используется для очистки URL-адреса перед его использованием в базе данных или для перенаправления.
Она принимает два параметра: $url (обязательный) — URL-адрес, который нужно очистить, и $protocols (необязательный) — массив допустимых протоколов.
Функция возвращает очищенный URL-адрес после применения функции esc_url() с контекстом ‘db’.
/**
* Sanitizes a URL for database or redirect usage.
*
* @param string $url The URL to be cleaned.
* @param string|null $protocols An array of acceptable protocols. Defaults to return value of wp_allowed_protocols().
* @return string The cleaned URL after esc_url() is run with the 'db' context.
*/
function sanitize_url( $url, $protocols = null ) {
// Implementation code...
return esc_url( $url, $protocols, 'db' );
}
Какие протоколы поддерживает функция sanitize_url()?
Функция sanitize_url() поддерживает различные протоколы, которые можно указать в параметре $protocols.
Если параметр $protocols не указан, то используется массив протоколов, возвращаемый функцией wp_allowed_protocols().
$protocols = array( 'http', 'https', 'ftp', 'ftps' );
$url = sanitize_url( $url, $protocols );
Какие символы и специальные символы допустимы в URL?
Функция sanitize_url() позволяет использовать в URL-адресе различные символы и специальные символы.
Она использует функцию esc_url() для очистки URL-адреса и удаления недопустимых символов.
$url = 'http://example.com/?param=value¶m2=value2';
$sanitized_url = sanitize_url( $url );
Какие символы и специальные символы не допустимы в URL?
В URL не допустимы следующие символы и специальные символы:
- Пробелы
- Символы новой строки
- Символы табуляции
- Символы кавычек
- Символы «<" и ">«
- Символы «#» и «?»
- Символы «{» и «}»
- Символы «|» и «»
- Символы «^» и «~»
- Символы «[» и «]»
- Символы «`» и «!»
Какие проверки безопасности выполняет функция sanitize_url()?
Функция sanitize_url() выполняет следующие проверки безопасности:
- Удаление недопустимых символов и специальных символов из URL
- Проверка протокола URL на соответствие списку допустимых протоколов
- Экранирование URL с использованием функции
esc_url()с контекстом «db»
Какие ошибки могут возникнуть при использовании функции sanitize_url()?
При использовании функции sanitize_url() могут возникнуть следующие ошибки:
- Некорректный формат URL
- Недопустимый протокол URL
Какие альтернативы существуют для функции sanitize_url()?
Вместо функции sanitize_url() можно использовать следующие альтернативы:
- Функция
filter_var()с фильтромFILTER_SANITIZE_URL - Функция
wp_http_validate_url()
Функция
sanitize_url()предназначена для очистки URL от недопустимых символов и специальных символов, а также для проверки безопасности протокола URL. Она возвращает очищенный URL после применения функцииesc_url()с контекстом «db». При использовании функции необходимо учитывать возможные ошибки, такие как некорректный формат URL или недопустимый протокол. В качестве альтернативы можно использовать функциюfilter_var()с фильтромFILTER_SANITIZE_URLили функциюwp_http_validate_url().
Связанные элементы
- Функция
wp_allowed_protocols(): Возвращает массив разрешенных протоколов для использования в URL. - Функция
esc_url(): Экранирует URL для безопасного использования в HTML или атрибутах URL. - Функция
wp_parse_url(): Разбирает URL на составные части и возвращает ассоциативный массив с этими частями. - Функция
wp_http_validate_url(): Проверяет, является ли переданный URL действительным. - Функция
wp_kses_bad_protocol(): Удаляет небезопасные протоколы из URL. - Функция
wp_kses_bad_protocol_once(): Удаляет небезопасные протоколы из URL, но только один раз.