parse_url () problema quando uno dei parametri è url
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?
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.