URL-код полного URL-адреса


Я использую функцию PHP urlencode(), чтобы избежать символов для тегов привязки(). Почему я не могу использовать эту функцию для полного URL-адреса, такого как

http://www.allposters.com/gallery.asp?startat=/getthumb.asp&txtSearch= ...

Функция преобразует эту строку в

http%3A%2F%2Fwww.allposters.com%2Fgallery.asp%3Fstartat%3D%2Fgetthumb.asp%26txtSearch

, который не работает при нажатии на...

Попытка избежать только ЗАПРОСА

startat%3D%2Fgetthumb.asp%26txtSearch

Также разрывает связь.

Итак, мой вопрос в том, какие символы я должен удалить, используя функцию urlencode()?

Спасибо,

Джоэл

Author: Joel, 2010-11-16

1 answers

URLENCODE предназначен для кодирования символов, которые имеют особое значение в URL-адресах (например, двоеточия, вопросительные знаки, косые черты и т.д.).

Вы должны применять URL-код только к значениям, которые вы хотите закодировать в своем URL-адресе, а не ко всему URL-адресу.

Например, Предположим, что у меня есть следующий URL-адрес:

http://example.com/search.php?query=VALUE

В нынешнем виде никакого побега не требуется. Но предположим, что ЗНАЧЕНИЕ на самом деле было

/. the book

Бит ЗНАЧЕНИЯ теперь содержит символ, который небезопасен, так как косая черта имеет особое значение в URL.

Поэтому, прежде чем я прикреплю ЗНАЧЕНИЕ к URL-адресу, мне нужно URLEncode только ЗНАЧЕНИЕ.

http://example.com/search.php?query=%2F.%20the%20book

Когда веб-сервер получит вышеуказанный запрос, ему потребуется URL-кодировать параметр запроса, чтобы вернуть исходный текст.

В примере, приведенном в вопросе, кодировалась вся строка запроса. Это неверно, так как специальные символы (например, амперсанды между параметрами запроса) затем экранируются и неправильно интерпретируются. Вы должны только закодировать значения параметров.

 9
Author: Kris, 2010-11-16 10:27:06