martes, 15 de diciembre de 2009

PHP: Variable $_GET



$_GET es una variable del sistema que contiene un array con información enviada por el usuario a través de la URL. Este variable suele ser usada para los programadores para crear opciones o menús.

Si esto no os queda claro crearemos un ejemplo:
  • http://example.com/index.php?variable1=hola&variable2=adios
Como veis en esa cadena estamos mandando dos variables tristemente llamadas variable1 y variable2. El contenido se lo asignamos con el = y en una tendremos hola y adiós.

Aplicado a los menús quedaría así:
  • http://example.com/index.php?menu=enlaces
Con esta variable mostraríamos diferentes cosas:
1   <?php
2  $menu 
htmlentities($_GET['menu']);
3  switch (
$menu){
4       case 
'enlaces':
5            
$imprime "Enlaces";
6       break;
7       default:
8            
$imprime "hola mundo";
9       break;
10  }
11  echo 
$imprime;
12  
?>


¿Cómo conseguimos el contenido de estas variables?
Muy fácil, en vuestro script para leer lo que nos envía el navegador sólo tendreis que hacer:

<?php
$variable1 = $_GET['variable1'];
echo $variable1;
?>

Si queréis saber el contenido de esta variable podéis usar el comando:
<?php
print_r($_GET);//Muestra el contenido en arrays
?>

VALIDACIÓN DE ENTRADAS
Lo más importante a la hora de programar es la validación de entradas. No te puedes fiar ni de los usuarios, ni de los administradores ni de ti. Por eso mismo debes validar todas las entradas. Hoy tratamos la variable $_GET empleada para recibir informacion a través de la URL.
Si queremos recibir un entero tendremos que usar el comando intval()
<?php
$entero = intval($_GET['variable1']);
echo $entero;
?>

Si queremos recibir un nombre, usaremos un string pero sin comandos html. Para ello podemos emplear expresiones regulares como el ereg_replace() aunque seguramente te olvides de algo y te la líen. Por eso es recomendable usar el comando strip_tags() o el comando htmlentities opción recomendada por mí.
<?php
$cadena = htmlentities($_GET['variable1']);
echo $cadena;
?>

Os invito a que probéis a no validar los códigos y aprendáis que pudiera pasar. Estos ejemplos son muy tontos pero htmlentities() es muy potente y capaz de parar ataque de tipo XSS o Cross Site Scripting. Mediante estos ataques o la inyección de código html se puede robar las cookies, la sesión y cualquier información susceptible de ser robada. Todavía no hemos hablado de bases de datos por lo que no hablaremos del addslashes() todavía.

En próximas entregas os hablaremos de la variable $_POST y seguiremos dando importancia a la validación de entradas de la que daremos mucho más adelante ejemplos de como hacerlo seguro.

No hay comentarios:

Publicar un comentario