如何使用PHP在URL中传递URL(作为GET参数)?

我有一些问题通过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

一切工作正常(它redirect到一个不存在的网站 – 当然,但它确实如此)。 通过消除,我可以说url参数有问题,但它是什么?

OBS:我使用rawurlencode()来编码URL。

编辑: 你问的代码…

在第一个视图中,链接是( 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> 

点击链接时,链接将redirect到一个动作( /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 (上面的问题,我链接到这个页面),其中头部包含:

 <script type="text/javascript"> setInterval(function(){ window.location = '<?php echo $url ?>'; },3000); </script> 

如果你不能摆脱限制,你可以通过这样的2个部分传递网址

 http://www.linkebuy.com.br/linkebuy/parceiro?protocol=http&url=www.google.com 

然后解析它的代码,使重定向的完整url。

当您传递任何URL参数时,您应该使用urlencode