Я пытаюсь передать сложный 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>
Из того, что я понимаю, вам нужно будет заменить &
,
$url = str_replace('&', '&', $url);
&
зарезервировано, используется для разделения параметров GET и &
предназначен для написания буквального амперсанда в URL-адресе.