Передать сложный URL как параметр в PHP

Я пытаюсь передать сложный URL-адрес в качестве параметра url, но проблема возникает, если URL-адрес содержит и, например, я хочу передать следующую ссылку в качестве параметра

http://www.google.ps/search?hl=en&client=firefox-a&hs=42F&rls=org.mozilla%3Aen-US%3Aofficial&q=The+type+%27Microsoft.Practices.ObjectBuilder.Locator%27+is+defined+ в + в + сборочного + что + такое + не + ссылки. + Вы + обязательно + добавить + а + ссылочный + до + сборки + & водн = F & АКИ = & акль = & OQ =

Я пытаюсь получить URL-адрес в качестве параметра от пользователя и перенаправить пользователя на этот URL-адрес.

Как я могу справиться с этим в PHP?


Вся история:

Я пытаюсь сделать некоторые аналитики объявлений на флеш-файлах, чтобы пользователи отправляли флеш-ролики на сайт, содержащий ссылку на требуемую веб-страницу.

Теперь моему клиенту нужно знать, сколько раз был щелкнут этот файл флэш-памяти. Чтобы решить эту проблему, я хочу, чтобы каждый, кто отправил флешку, написал ссылку на мою веб-страницу клиента и передал требуемый URL-адрес в качестве параметра следующим образом

http://myclientwebpage.com/disp.php?link=www.google.com&id=16

таким образом я могу обновить свою базу данных и получить подсчет количества раз, когда эта ссылка была нажата

Используйте urlencode() или rawurlencode() .


Вы написали:

Я пытаюсь получить URL-адрес в качестве параметра от пользователя и перенаправить пользователя на этот URL-адрес.

Но вы не ответили на вопрос – как вы получаете этот URL-адрес? Как пользователь предоставляет вам это? Это написано в <input type='text'/> ? Или пользователь нажимает ссылку, содержащую URL-адрес, как один из параметров? Или передается как идентификатор некоторого URL-адреса, который хранится в БД?

Один случай, который приходит мне на ум – замена URL-адресов в текстовом виде и отправка пользователю на какую-то «страницу перенаправления» перед открытием реальной страницы, поэтому на последней странице не отображается HTTP-реферер, который может содержать некоторые защищенные данные (например, идентификатор сеанса). В этом случае вы должны написать

 <a href='redirect.php?link=<?php echo rawurlencode($url); ?>'> <?php echo htmlspecialchars($url); ?> </a> 

вместо

 <a href='redirect.php?link=<?php echo $url; ?>'> <?php echo htmlspecialchars($url); ?> </a> 

Из того, что я понимаю, вам нужно будет заменить &amp; ,

 $url = str_replace('&', '&amp;', $url); 

& зарезервировано, используется для разделения параметров GET и &amp; предназначен для написания буквального амперсанда в URL-адресе.