miércoles, 27 de agosto de 2014

El método GET en PHP - 2 de 2



4. Información complementaria

a. Argumentos con el mismo nombre

Si pasa en la URL dos argumentos con el mismo nombre, $_GET va a tener en cuenta el último nombre.

Por ejemplo:

La página get_recibe.php con la URL: 
http://127.0.0.1/get_recibe.php?nombre=Juan&nombre=Roberto

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Ejercicio con GET</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
<?php
if (isset($_GET["nombre"])) { //comprueba que el argumento nombre
//está especificado
echo "El nombre es:". $_GET["nombre"];
}
?>
</body>
</html>

Da como resultado:

El nombre es:Roberto


b. Argumentos de tipo tabla

PHP permite pasar en la URL los argumentos en forma de tabla.

Es posible que no quiera introducir un índice, como en este ejemplo: http://127.0.0.1/get_recibe.php?dato[ ]=Juan&dato[ ]=Gómez

En este caso, las claves de la tabla son 0 y 1 respectivamente.

También puede introducir un índice, por ejemplo: http://127.0.0.1/get_recibe.php?dato[nombre]=Juan&dato[apellido]= Gómez

En este caso, las claves de la tabla son nombre y apellido respectivamente.

Por ejemplo:

La página get_recibe.php con la URL: 
http://127.0.0.1/get_recibe.php?dato[nombre]=Juan&dato[apellido]= Gómez

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Ejercicio con GET</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
<?php
if (isset($_GET["dato"])) { //comprueba que el argumento dato está
//especificado
echo "Los datos son:";
foreach ($_GET["dato"] as $valor) {
echo $valor." ";
}
}
?>
</body>
</html>

Da como resultado:

Los datos son:Juan Gómez


c. Argumentos con caracteres especiales

No puede pasar en una URL caracteres especiales, como & o ? o un espacio.

Y no puede escribir, por ejemplo: 
http://127.0.0.1/get_recibe.php?argumento=Juan&Gómez

El servidor Web entenderá que hay dos variables argumento y Gómez, cuando lo que quiere hacer es pasar como argumento Juan&Gómez.

Para realizar esto, debe codificar la URL, es decir, transformar los caracteres especiales en un código que el servidor Web pueda entender.

Hay dos funciones en PHP que permiten hacerlo: urlencode() y rawurlencode().

Estas funciones toman como argumento la URL que debe codificar y devuelven la URL sin los caracteres especiales. Se diferencian en que la función rawurlencode() transforma los espacios en %20, mientras que la función urlencode() los transforma en +.

Por ejemplo:

<?php
$argumento = "Juan&Gómez Pablo";
echo urlencodigo($argumento)."<br />";
echo rawurlencodigo($argumento)."<br />";
?>

Da como resultado:

Juan%26Gómez+Pablo
Juan%26Gómez%20Pablo

Para pasar como argumento el valor "Juan&Gómez Pablo", debe escribir la siguiente URL: http://127.0.0.1/get_recibe.php?argumento=Juan%26Gómez%20Pablo

Otro ejemplo:

La página get_envia.php contiene un enlace que llama a la página get_recibe.php con el argumento Juan&Gómez.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Ejercicio con GET</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
<?php
$argumento = "Juan&Gómez"
?>
Aquí está el enlace con Juan&Gómez como argumento: <a
href="get_recibe.php?argumento=<?php echo urlencodigo($argumento)?>">
get_recibe.php con argumento</a>
</body>
</html>

Si observamos el código fuente en el navegador, tenemos:

<a href="get_recibe.php?argumento=Juan%26Gómez">
get_recibe.php con argumento</a>

La página get_recibe.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<head>
<title>Ejercicio con GET</title>
<meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
</head>
<body>
<?php
echo "El argumento es:".$_GET["argumento"];
?>
</body>
</html>

Da como resultado:

El argumento es:Juan&Gómez



Espero haber ayudado en algo. Hasta la próxima oportunidad!







No hay comentarios:

Publicar un comentario en la entrada