parse_url() problema quando um dos parâmetros de url
Pergunta
Eu chamo de um script php http://site.com/process.php
o que leva uma url como um dos seus parâmetros. for=
http://site.com/process.php?for=http://www.anotherwebsite.com
Eu, então, fazer isso e tentar parse_url()
mas parse_url() dá um erro de análise.
$uri = $_SERVER['REQUEST_URI']; // /process.php?for=http://www.anotherwebsite.com
parse_url($uri);
Como posso codificar o for
parâmetro sobre o envio de lado (na url) ou no lado do receptor (php) para que parse_url()
entende que é apenas um parâmetro que acontece para olhar como uma url?
Solução
Bem, primeiro você tem de urlencode()
o for=
parâmetro e, em seguida, em process.php
, você pode simplesmente fazer
$url = $_GET["for"];
$url = urldecode($url); // http://www.anotherwebsite.com
Aqui estão as funções de:http://php.net/manual/en/function.urlencode.php http://php.net/manual/en/function.urldecode.php
Outras dicas
Antes de incluir a sua url como um get
parâmetro, use urlencode
$full_url = 'http://site.com/process.php?for=' . urlencode('http://www.anotherwebsite.com');
Esta função é conveniente quando a codificação de uma seqüência de caracteres a ser usado em um consulta parte de uma URL, como um conveniente como passar variáveis para o próximo página.
Para inverter o resultado de urlencode
, uso urldecode
.Como mario, destacou em um comentário abaixo, $_GET
parâmetros já estão urldecoded.