viernes, 26 de septiembre de 2014

PHP (04) Lectura de datos desde WEB (02) Campos de texto, diferencias entre get y post

Tal y como vimos en el anterior articulo a modo de muestra, vamos a tener dos archivos, el primero es nuestro index.html donde aparece el formulario:
<form method="get" action="miphp.php">
 Nombre:
 <input name="nombre" type="text">
 .
 .
 <input type="submit" value="enviar">
 <input type="reset" value="borrar">
</form>

En el segundo llamado miphp.php es donde se encuentra la respuesta cuando se hace click sobre el botón de enviar:
<html>
<head>
</head>
<body>
 <?php
  $nombre=$_GET["nombre"];
  echo 'Hola ' . $nombre;
 ?>
</body>
</html>

Esto funciona correctamente, pero si nos fijamos en la URL tenemos un problema y es que aparece el campo de texto que hemos introducido dando una URL similar a esta:

http://localhost/miphp/miphp.php?nombre=Pepe

Si estuviéramos hablando de un login, un número de cuenta corriente o algo similar nuestra clave o campo aparecería en la URL cosa que no queremos, pero solucionar esto es realmente sencillo, tan solo hace falta cambiar el método get a post, y la variable superglobal $_GET por $_POS, quedando nuestros archivos de la siguiente forma:
index.html
<form method="post" action="miphp.php">
 Nombre:
 <input name="nombre" type="text">
 .
 .
 <input type="submit" value="enviar">
 <input type="reset" value="borrar">
</form>

Y miphp.php
<html>
<head>
</head>
<body>
 <?php
  $nombre=$_POST["nombre"];
  echo 'Hola ' . $nombre;
 ?>
</body>
</html>

Cuando se hace esto vemos que la URL una vez que se hace click en enviar es mucho más simple y que no contiene los datos a la vista (Esto da seguridad frente a miradas indiscretas, y aunque no se crea hay multitud de casos de asalto y fallos de seguridad que se deben a un ojo por encima del hombro del usuario).

http://localhost/miphp/miphp.php

El método post envía los datos en los encabezados HTTP y no en la URL

No hay comentarios:

Publicar un comentario