2013-03-06 10 views
8

Sto riscontrando qualche problema nel passare l'URL come parametro GET. Quando cerco di accesso:Come passare l'URL nell'URL (come parametro GET) usando PHP?

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

ottengo il seguente messaggio:

Unexpected error.

Tuttavia, se vado per:

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

Tutto funziona bene (reindirizza verso un sito inesistente - 123 -, ovviamente, ma lo fa). Con l'eliminazione posso dire che c'è qualcosa di sbagliato nel parametro url, ma che cos'è?

OBS: Sto usando rawurlencode() per codificare l'URL.

EDIT:Codice hai chiesto ...

Nella prima vista, in cui il collegamento è (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> 

Quando si fa clic sul link reindirizza ad un'azione (/linkebuy/parceiro), dove accade il seguente (in sostanza nulla, solo mantenendo nel quadro):

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 
} 

Esso include la vista, lead-parceiro.php (sopra sulla questione, mi link a questa pagina), in cui la testa contiene:

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

Utilizzo semplice 'UrlEncode()' e dirci se questo fa alcuna differenza. –

+0

Nessuna differenza. – ramonztro

+2

Il problema è nella tua funzione di reindirizzamento .... mostraci il codice;) – Hackerman

risposta

6

Se non è possibile eliminare la restrizione è possibile passare l'url in 2 parti come questo

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

E poi analizzarlo sul vostro codice per rendere l'URL completo per il reindirizzamento.

+0

YEAH! Hai ragione! Come posso risolvere questo problema? Voglio dire, sistemare la configurazione di apache. – ramonztro

+0

Non sono sicuro, questa è probabilmente una regola di riscrittura cheking la tua querystring. Guarda i file .htaccess e i file conf di apache per trovarlo. – Ateszki

+2

Dai un'occhiata a questa risposta, dato che il tuo sito è su hostgator, la risposta accettata deve essere rilevante http://stackoverflow.com/questions/10992219/http-in-query-string-does-not-work – Ateszki

4

Si dovrebbe usare urlencode quando si passa nulla come parametro URL

Problemi correlati