[PHP] Cifrado y descifrado de URL (reversible)

Cifrado y descifrado de URL (reversible)

 

Cifrado: urlencode

urlencode (cadena  $str ): cadena

Esta función facilita la codificación de una cadena y su uso en la parte de solicitud de la URL, y también facilita el paso de variables a la página siguiente.

Devuelve una cadena. Todos los caracteres no alfanuméricos de esta cadena, excepto -_., Se reemplazarán con un signo de porcentaje (%) seguido de dos dígitos hexadecimales, y los espacios se codificarán como un signo más (+). Esta codificación es la misma que la codificación de los datos POST del formulario WWW y la misma que la codificación del tipo de medio de application / x-www-form-urlencoded. Por razones históricas, esta codificación es diferente de la codificación RFC1738 en que los espacios se codifican como signos más (+).

Ejemplo 1:

$userInput = "测试";
echo '<a href="mycgi?foo='. urlencode($userInput). '">';
// 结果:<a href="mycgi?foo=%E6%B5%8B%E8%AF%95">

 Debido a que el contenido de salida son etiquetas html, debe ver el código fuente de la página web cuando la visualiza o usar la función htmlentities .

$userInput = "测试";
//echo '<a href="mycgi?foo='. urlencode($userInput). '">';
echo htmlentities('<a href="mycgi?foo='. urlencode($userInput). '">');

Resultado de salida:

(En este momento, se emite como una cadena)

Ejemplo 2:

Cuando varios parámetros:

$foo = "测试1";
$bar = "测试2";
$query_string = 'foo=' . urlencode($foo) . '&bar=' . urlencode($bar);
echo '<a href="mycgi?' . htmlentities($query_string) . '">';

echo '<a href="mycgi?' . $query_string . '">';

 

 

Nota:

Tenga cuidado con las variables que coinciden con las entidades HTML. Cosas como & amp, & copy y & pound serán analizadas por el navegador y se usará la entidad real en lugar del nombre de variable esperado. Esta es una confusión obvia, y el W3C ha advertido a la gente durante varios años. Dirección de referencia: »http://www.w3.org/TR/html4/appendix/notes.html#hB.2.2 .

PHP admite cambiar el separador de parámetros al punto y coma recomendado por W3C a través del comando arg_separator.ini. Desafortunadamente, la mayoría de los agentes de usuario no envían datos de formulario en formato de separador de punto y coma. La solución más sencilla es utilizar & amp; en lugar de & como separador. No es necesario modificar el separador de argumentos de PHP para esto. Deje que permanezca &, y solo use  htmlentities ()  o  htmlspecialchars ()  para codificar su URL.

 

Descifrado: urldecode

urldecode (cadena  $str ): cadena

Decodifica cualquier% ## en la cadena codificada dada. El signo más ('+') se decodifica en un carácter de espacio.

Ejemplo 1 (Cifrado y descifrado de todo el enlace):

$url = '<a href="http://www.xxx.com/test?foo=测试1&bar=测试2">';
$encodeUrl = urlencode($url);
echo $encodeUrl . "\n";
echo urldecode($encodeUrl);

resultado:

 

Ejemplo 2 (Cifrado y descifrado de parámetros):

Simplemente use urldecode para descifrar el valor del parámetro recibido

//<a href="mycgi?foo=%E6%B5%8B%E8%AF%951&bar=%E6%B5%8B%E8%AF%952">
$param1 = '%E6%B5%8B%E8%AF%951';
$param2 = '%E6%B5%8B%E8%AF%952';
echo urldecode($param1) . "\n";
echo urldecode($param2) ;

resultado:

 

Supongo que te gusta

Origin blog.csdn.net/I_lost/article/details/105388252
Recomendado
Clasificación