onetrickpony
  • 0
Гуру

Разница между esc_url() и esc_url_raw()

  • 0

http://core.trac.wordpress.org/browser/trunk/wp-includes/formatting.php#L2239

Я смущен тем, когда следует использовать любой из них.

Предполагая, что у меня есть этот URL: http://site.com/?getsomejavascript=1, который динамически генерируется javascript:

  • если я включаю скрипт с esc_url(add_query_arg('apples', 420)), я получаю, http://site.com/?getsomejavascript=1&apples=420 и он ломается из-за этих #038; ссылок

  • если я использую, esc_url_raw(add_query_arg('apples', 420)) я получаю правильный URL:http://site.com/?getsomejavascript=1&apples=420

но в документации я узнаю, что esc_url_raw следует использовать только для экранирования URL-адресов, вставленных в базу данных…

Share
  1. Из записи Кодекса для проверки данных: URL -адреса :

    esc_url( $url, (array) $protocols = null ) (с 2.8)

    Всегда используйте esc_url при очистке URL-адресов (в текстовых узлах, узлах атрибутов или где-либо еще). Отклоняет URL-адреса, которые не имеют одного из предоставленных протоколов из белого списка (по умолчанию http, https, ftp, ftps, mailto, news, irc, gopher, nntp, feed и telnet), удаляет недопустимые символы и удаляет опасные символы. Устарело с версии 3.0: clean_url() Эта функция кодирует символы как объекты HTML: используйте ее при создании документа (X)HTML или XML. Кодирует амперсанд (&) и одинарные кавычки (‘) как числовые ссылки на объекты (&, ‘).

    esc_url_raw( $url, (array) $protocols = null ) (с 2.8)

    Для вставки URL в базу данных. Эта функция не кодирует символы как объекты HTML: используйте ее при сохранении URL-адреса или в других случаях, когда вам нужен некодированный URL-адрес. Эту функциональность можно воспроизвести в старой функции clean_url, установив $context в db.

    Итак, основные отличия выглядят следующим образом:

    1. esc_url() кодирует объекты HTML, а esc_url_raw() не
    2. esc_url() предназначен для вывода, а esc_url_raw() предназначен для хранения базы данных

    РЕДАКТИРОВАТЬ:

    Поскольку вы либо жестко кодируете (или сохраняете/сохраняете отдельно) фактический URL-адрес из строки запроса, а затем добавляете строку запроса через [add_query_arg()][2], может быть, лучше экранировать добавленную строку запроса через esc_js(), а не esc_url() ?

    Например:

    add_query_arg( esc_js( 'apples' ), esc_js( '420' ), $myurl )
    
    • 0

Оставить ответ

You must login to add an answer.