2013-03-06 4 views
8

Ich habe Probleme mit der Weitergabe von URLs als GET-Parameter. Wenn ich versuchen, zuzugreifen:Wie URL in URL (als GET-Parameter) mit PHP übergeben?

http://www.linkebuy.com.br/linkebuy/parceiro?url=http%3A%2F%2Fwww.google.com

ich die folgende Meldung:

Unexpected error.

Allerdings, wenn ich gehen für:

http://www.linkebuy.com.br/linkebuy/parceiro?url=123

Alles funktioniert gut (es leitet zu einer inexistenten Site um - 123 - natürlich, aber es tut das erwartete). Durch Eliminierung kann ich sagen, dass etwas mit dem Parameter url nicht stimmt, aber was ist das?

OBS: Ich verwende rawurlencode(), um die URL zu kodieren.

EDIT:-Code Sie gefragt ...

In der ersten Ansicht, wo der Link (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> 

Beim Anklicken der Link auf eine Aktion umleitet (/linkebuy/parceiro), wo passiert Folgendes (im Grunde nichts, nur im Rahmen halten):

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 
} 

Es umfasst die Ansicht, lead-parceiro.php (oben auf die Frage, verlinke ich auf dieser Seite), wo der Kopf enthält:

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

Verwenden Sie einfache 'urlencode()' und sagen Sie uns passieren, wenn das einen Unterschied macht. –

+0

Kein Unterschied. – ramonztro

+2

Das Problem ist in Ihrer Redirect-Funktion .... zeigen Sie uns den Code;) – Hackerman

Antwort

6

Wenn Sie nicht der Beschränkung loswerden können Sie die URL in 2 passieren kann Teile wie diese

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

und analysieren sie dann auf Ihrem Code die vollständige uRL für die Umleitung zu machen.

+0

YEAH! Du hast recht! Wie kann ich das beheben? Ich meine, repariere die Apache-Konfiguration. – ramonztro

+0

Ich bin nicht sicher, das ist wahrscheinlich eine Rewrite-Regel checking Ihre Querystring. Sehen Sie sich die .htaccess-Dateien und die Apache-Conf-Dateien an, um sie zu finden. – Ateszki

+2

Werfen Sie einen Blick auf diese Antwort, da Ihre Website bei Hostgator ist, muss die akzeptierte Antwort relevant sein http://stackoverflow.com/questions/10992219/http-in-query-string-does-not-work – Ateszki

4

sollten Sie urlencode verwenden, wenn Sie etwas als URL-Parameter