Domanda

Chiamo uno script php http://site.com/process.php questo prende un url come uno dei suoi parametri. for=

http://site.com/process.php?for=http://www.anotherwebsite.com

Allora faccio questo e cerco di parse_url() ma parse_url () dà un errore di analisi.

$uri = $_SERVER['REQUEST_URI']; // /process.php?for=http://www.anotherwebsite.com
parse_url($uri);

Come posso codificare il for parametro sul lato di invio (nell'url) o sul lato di ricezione (php) in modo che parse_url() capisce che è solo un parametro che sembra un url?

È stato utile?

Soluzione

Beh, prima devi urlencode() il for= parametro, quindi in process.php, Lei può fare semplicemente

$url = $_GET["for"];
$url = urldecode($url); // http://www.anotherwebsite.com

Ecco le funzioni:http://php.net/manual/en/function.urlencode.php http://php.net/manual/en/function.urldecode.php

Altri suggerimenti

Prima di includere il tuo URL come get parametro, uso urlencode

$full_url = 'http://site.com/process.php?for=' . urlencode('http://www.anotherwebsite.com');

Questa funzione è conveniente quando codifica di una stringa da utilizzare in un query parte di un URL, come un comodo modo per passare le variabili al prossimo pagina.


Per invertire il risultato di urlencode, utilizzare urldecode.Come Mario ha sottolineato in un commento qui sotto, $_GET i parametri sono già urldecoded.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top