URL как параметры получения URL - проблема с "&" - PullRequest
1 голос
/ 27 марта 2011

Существует скрипт, который получает другой URL в качестве параметра GET:

script.php?file=http://www.google.com&id=123

Проблема:
когда в URL есть сам параметр, он используется как параметр скрипта, а не параметр этого URL:

script.php?file=http://www.google.com?q=adsf&lang=en&id=123

URL-адрес http://www.google.com?q=adsf&lang=en, но он прерывается после &, поскольку рассматривается как связанный с script.php.

Что я могу с этим поделать?
Мне надоело заменять & на %26, но с этим URL не работает.

Ответы [ 3 ]

2 голосов
/ 27 марта 2011

Вам нужно, чтобы URL кодировал весь URL, который вы передаете в качестве параметра, другому URL (вашему сценарию).% 26 - правильная кодировка для &.Просто убедитесь, что вы декодируете его на стороне сервера, прежде чем использовать его.Вы не говорите, какой язык (языки) вы используете, но большинство, inc javascript и php имеют встроенные функции кодирования URL.

2 голосов
/ 27 марта 2011

Попробуйте закодировать каждый специальный символ следующим образом:

script.php?file=http%3a%2f%2fwww.google.com%3fq%3dadsf%26lang%3den&id=123

хотя это может быть лучше и проще в использовании rawurlencode().

Кроме того, прочитайте это о кодировке URL.

2 голосов
/ 27 марта 2011

Вам необходимо кодировать значение с помощью процентного кодирования .

. Если вы используете PHP, используйте rawurlencode (или urlencode если application / x-www-form-urlencoded (ожидается):

$url = 'http://www.google.com?q=adsf&lang=en';
echo 'script.php?file='.rawurlencode($url);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...