miércoles, 11 de abril de 2012

Pasar parámetros en una url (urlencode-urldecode)


Bienvenid@s, hoy veremos como utilizar la función urlencode, esta función es útil para codificar los valores enviados a través de una consulta a través de una URL. Devuelve una cadena en la que todos los caracteres no-alfanuméricos excepto -_. han sido reemplazados con un signo de porcentaje (%) seguido por dos dígitos hexadecimales y los espacios son codificados como signos de suma (+).

En muchas ocasiones es necesario enviar parámetros a través de una URL ... 

nombre=Jose Antonio
Apellidos=García Rodríguez

http://MiPaginaWeb.es?nombre=Jose Antonio&apellidos=García Rodríguez

Como se puede observar existen espacios y tildes algo que nos dará un pequeño dolor de cabeza si no codificamos adecuadamente esta consulta.

En el siguiente ejemplo, podrá ver como al enviar el formulario, se capturan los valores y son pasados a una url codificada con urlencode y decodificada con urldecode.



Código de ejemplo ...

<?php
/* By http://php-estudios.blogspot.com */
$urlencode = "";
$urldecode = "";
if (isset($_GET["nombre"]) and isset($_GET["apellidos"]))
{

$nombre = $_GET["nombre"];
$apellidos = $_GET["apellidos"];  

//Codificar los valores
$n = urlencode($nombre);
$a = urlencode($apellidos);

//url
$url = "http://MiPaginaWeb.es?nombre=".$n."&apellidos=".$a."";

//Imprimir en pantalla la cadena codificada.
$urlencode = "<p>Con la función urlencode() nos queda de la siguiente manera ...</p>
      <p><span style='color: blue; font-weight: bold;'>$url</span></p>";

//Decodificar los valores
$n = urldecode($nombre);
$a = urldecode($apellidos);   
   
//url
$url = "http://MiPaginaWeb.es?nombre=".$n."&apellidos=".$a."";

//Imprimir en pantalla la cadena decodificada.
$urldecode = "<p>Con la función urldecode() nos queda de la siguiente manera ...</p>
      <p><span style='color: blue; font-weight: bold;'>$url</span></p>";
}
?>

<!DOCTYPE HTML>
<html>
<head>
<title>Pasar parámetros en una url (urlencode-urldecode)</title>
</head>
<body>
<form method="get" action="<?php echo $_SERVER["PHP_SELF"]; ?>">
Nombre: <input type="text" name="nombre" placeholder="Introduce tu nombre"> 
Apellidos: <input type="text" name="apellidos" placeholder="Introduce tus apellidos">
<input type="submit" value="enviar">
</form>
<?php
echo $urlencode.$urldecode;
?>
</body>

</html>




No hay comentarios: