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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top