domingo, 27 de diciembre de 2009

PHP: Variable $_POST


En nuestra edición anterior sobre este lenguaje de programación os hablamos sobre la variable $_GET y para que podía ser usada esta. Hoy nos centraremos en la variable $_POST muy empleada en los formularios.

La variable $_POST recibe los datos a través del navegador a diferencia de la variable $_GET que recibe las variables a través de la URL de la página. Para enviar los datos a través del navegador es necesario crear un formulario. En el ejemplo de hoy crearemos un sencillo formulario de login o acceso para administradores.
Este formulario es muy sencillo y llevará consigo un script muy tonto. El fin de la lección de hoy es que aprendáis a usar los formularios y a emplearlos de manera más o menos rudimentaria.

Para ello primero crearemos el formulario HTML que incluiremos en nuestro código php.

El fórmulario HTML sería más o menos así:
 <form method="POST" action="formulario.php">
<input type="text" name="usuario"> <br />
<input type="password" name="contra"><br />
<input type="hidden" name="ok" value="1">
<input type="submit" value="Enviar">
</form>
 Este código html mostrará un formulario cuyo método será POST ($_POST) y que empleará a formulario.php (nombre de nuestro script). Contiene 2 campos visibles, 1 oculto y un botón de enviar. El campo oculto no tiene mucho sentido en este script pero a veces si que nos sirve de utilidad para enviar información que nos gustaría que no fuese modificada por el usuaro. En cualquier caso siempre se puede modificar por lo que no debéis guardar ahí información demasiado sensible.

El siguiente paso será crear nuestro script en php. Su funcionamiento será básico. Como siempre validaremos las entradas o nuestra web será una basura insegura. Para ello mismo emplearemos el siguiente código.
$usuario = addslashes(htmlentities(strip_tags($_POST["usuario"]);
$contraseña = sha1($_POST['password']);
$paso = intval($_POST["ok"]);
La variable usuario está fuertemete verificada. Para empezar eliminaremos todos los códigos html y php que incluya el nombre de usuario. A continuación transformaremos los elementos susceptibles de ser ejecutados como html a sus identidades de texto. Un ejemplo < se transforma &lt; y así con todos los caracteres. También y aunque no hayamos hablado de las inyecciones SQL ni de bases de datos, añadiremos el carácter de escape \ para evitar los problemas con la '. Por ello mismo se transformará ' en \' y no habrá problemas.
El campo de contraseña lo cifraremos a sha1 para evitar que ojos resultones miren y paso la transformaremos a número entero.

 El siguiente paso será añadir una sentencia condicional para ver que acción realizamos según la variable paso. Para ello:
if ($paso==0){//No ha usado el formulario

}else{// ha usado el forrmulaio

}
Muy bien, ya tenemos nuestro código. Para usarlo crearemos un archivo llamado formulario.php y lo subiremos a nuestro servidor. El contenido de este archivo será:
<?php
$usuario = addslashes(htmlentities(strip_tags($_POST["usuario"]);
$contraseña = sha1($_POST['password']);
$paso = intval($_POST["ok"]);

if ($paso==0){//No ha usado el formulario
   echo '<form method="POST" action="formulario.php">
   <input type="text" name="usuario"> <br />
   <input type="password" name="contra"><br />
   <input type="hidden" name="ok" value="1">
   <input type="submit" value="Enviar">
   <input type="text" name="usuario"> <br />
   <input type="password" name="contra"><br />
   <input type="hidden" name="ok" value="1">
   <input type="submit" value="Enviar">
  </form>';
else{
  if ($usuario="ZeYt" && $password="99800b85d3383e3a2fb45eb7d0066a4879a9dad0"){
     echo "Bienvenido ".$usuario;
  }else{
     echo "La contraseña es hola y el usuario es ZeYt";
  }
}
?>
Con todo esto os invito a que  probéis a jugar con los formularios y hagáis combinaciones con $_GET y $_POST. En próximas ediciones hablaremos de la variable $_COOKIE y en muy poquito sobre bases de datos.

No hay comentarios:

Publicar un comentario