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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top