У меня возникают проблемы с передачей URL как параметра GET. Когда я пытаюсь получить доступ:
http://www.linkebuy.com.br/linkebuy/parceiro?url=http%3A%2F%2Fwww.google.com
Я получаю следующее сообщение:
Однако, если я пойду за:
http://www.linkebuy.com.br/linkebuy/parceiro?url=123
Все работает очень хорошо (он перенаправляет на несуществующий сайт – 123 -, конечно, но он делает ожидаемый). Исключение я могу сказать, что что-то не так с параметром url
, но что это?
OBS: Я использую rawurlencode()
для кодирования URL-адреса.
EDIT: Код, который вы задали …
В первом представлении, где ссылка ( http://www.linkebuy.com.br/notebook/detalhe?id=5 ):
<!-- url() function just completes the right URL (production or development) --> <a href="<?php echo url('linkebuy/parceiro/?url=' . rawurlencode($l->getUrl()), true) ?>" class="<?php echo $leadClass ?> oferta" target="_blank"> <?php echo $l->getNomeFantasia() ?> </a>
При нажатии ссылки перенаправляется на действие ( /linkebuy/parceiro
), где происходит следующее (в основном ничего, просто сохраняя в рамках):
public function execute($request, $response) { $response->addParameter('url', rawurldecode($request->getParameter('url', ''))); //This creates $url in the view $response->setTemplate('site/linkebuy/lead-parceiro.php'); //Forwards to the view }
Он включает в себя представление, lead-parceiro.php
(выше на вопрос, я lead-parceiro.php
на эту страницу), где глава содержит:
<script type="text/javascript"> setInterval(function(){ window.location = '<?php echo $url ?>'; },3000); </script>
Если вы не можете избавиться от ограничения, вы можете передать URL-адрес в 2-х частях, как это
http://www.linkebuy.com.br/linkebuy/parceiro?protocol=http&url=www.google.com
И затем проанализируйте его на своем коде, чтобы сделать полный URL-адрес для перенаправления.
Вы должны использовать urlencode
когда вы передаете что-либо как параметр URL