problema parse_url() cuando uno de los parámetros es url
Pregunta
Llamo a un script php http://site.com/process.php
que toma una URL como uno de sus parámetros. for=
http://site.com/process.php?for=http://www.anotherwebsite.com
Luego hago esto y trato de parse_url()
pero parse_url() da un error de análisis.
$uri = $_SERVER['REQUEST_URI']; // /process.php?for=http://www.anotherwebsite.com
parse_url($uri);
¿Cómo puedo codificar el for
parámetro ya sea en el lado emisor (en la URL) o en el lado receptor (php) para que parse_url()
¿Entiende que es solo un parámetro que parece una URL?
Solución
Bueno, primero debes urlencode()
el for=
parámetro, luego en process.php
, simplemente puedes hacer
$url = $_GET["for"];
$url = urldecode($url); // http://www.anotherwebsite.com
Aquí están las funciones:http://php.net/manual/en/function.urlencode.phphttp://php.net/manual/en/function.urldecode.php
Otros consejos
Antes de incluir su URL como get
parámetro, uso urlencode
$full_url = 'http://site.com/process.php?for=' . urlencode('http://www.anotherwebsite.com');
Esta función es conveniente al codificar una cadena para usarse en una parte de consulta de una URL, como una forma conveniente de pasar las variables a la página siguiente.
Para revertir el resultado de urlencode
, usar urldecode
.Como mario señaló en un comentario a continuación, $_GET
Los parámetros ya están codificados en URL.