2010-03-12 38 views
5

Tengo un sitio web que utiliza los enlaces facebook, twitter, delicious share. Contienen una url codificada en url del sitio web que desea compartir. El problema es que luego quiero enviar el facebook/twitter/delicious url a través de una página de redireccionamiento php.¿Es posible urlencode una url que contiene una url codificada en url?

¿Funciona codificar una url dentro de una url codificada? ¿Habrá efectos secundarios?

Para simplificar mi pregunta:

www.website.com/redirect.php?url=" URLENCODED (http://www.facbook.com/sharer.php?t='URLENCODED(title)'&u='URLENCODED(http://www.hotel.com)') 
+0

Para comprender la recursión, primero debe comprender la recursión. –

Respuesta

9

puede codificar una cadena varias veces con el porcentaje de codificación y obtener el valor original mediante la decodificación de que la misma cantidad de veces:

$str = implode(range("\x00", "\xFF")); 
var_dump($str === urldecode(urldecode(urldecode(urlencode(urlencode(urlencode($str))))))); 

Aquí el el valor de $str se codifica tres veces y luego se decodifica tres veces. La salida de esa codificación y descodificación repetida es idéntica al valor de $str.

Así que trate esto:

'http://example.com/redirect.php?url='.urlencode('http://www.facbook.com/sharer.php?t='.urlencode('title').'&u='.urlencode('http://www.hotel.com')) 
+0

Entiendo cómo hacerlo ... Me preocupaba que urlencodificar una url urlcodificada podría descodificar toda la url en la página de redirección ... ¿Debo asumir que los códigos de URL anidados funcionarán bien? – Mark

+0

Como dijo @Gumbo: "Puede codificar una URL varias veces y obtener el valor original cuando se decodifica la misma cantidad de veces". Cada vez que codifica, todas las partes codificadas de antes se codifican * de nuevo * – Josh

+1

@ Mark: Entonces, en caso de que todavía esté confundido, no, la URL de redirección no decodificará toda la URL, solo eliminará un "nivel" de codificación Tu plan es bueno, en otras palabras. – Josh

1

Está bien para añadir una segunda capa de URLEncoding. La idea de URLEncoding es evitar que el servidor malinterprete los caracteres especiales que pueden estar presentes en una cadena de texto. Sin embargo, el script de recepción debe esperar una capa adicional de urlencode() y actuar en consecuencia.

O si sabe que la cadena ha sido urlencoded, ¿no podría simplemente pasarla como está? No es necesario urlencoding adicional.

3

Debe poder codificar recursivamente la URL tantas veces como desee. Si codifica un personaje como/varias veces obtendrá:

0:/
1: %3F 
2: %%3F 
3: %%%%3F 

etc.

+0

encode ('?') =% 3F. Además, cuando se codifica recursivamente, la única parte que se codifica de nuevo es '%', por lo que termina siendo más como '% 2525253F', donde decodifica ('% 25') =% –

0

O simplemente urldecode el título y la URL, entonces urlencode toda la cadena.

0

Como se mencionó anteriormente, puede codificar las URL tanto como desee, pero debe saber que cuantas más veces codifique los datos de la url, más aumentará la longitud, puede aumentar hasta dos veces. que será molesto para los usuarios si es demasiado largo. también puede haber una limitación en la longitud de la URL en algunos buscadores. También en el lado del servidor habrá una codificación de sobrecarga y la descodificación de los datos. En resumen, debería estar realmente seguro de que lo necesita antes de codificar/decodificar varias veces.

Cuestiones relacionadas