Logo Reaper

Gestión de formularios

Una de las características más potentes de PHP es la forma de gestionar formularios HTML. El concepto básico que es importante entender es que cualquier elemento de un formulario estará disponible automáticamente en sus scripts de PHP.
Al crear un formulario en el html, hay 2 propiedades importantes que definen como van a gestionarse los datos:

Diferencias entre get y post

Los métodos GET y POST se utilizan para enviar los datos al servidor, y la principal diferencia entre ellos es que el método GET añade los datos a la URI definida en el atributo de acción del formulario. Por el contrario, el método POST adjunta datos al organismo solicitado.

El uso del método GET es inapropiado cuando la información sensible necesita ser llenada en el formulario. El método POST es útil cuando el usuario requiere rellenar las contraseñas u otra información confidencial.

Creando el formulario html básico


<form action="formulario.php" method="post">
<label>Nombre
<input type="text" name="nombre" />
</label
<br>
<label>Edad
<input type="number" name="edad" />
</label>
<br>
<input type="submit" value="Enviar los datos" />
</form>

Script php que recibe los datos


<?php
$name = $_POST["nombre"];
$age = $_POST["edad"];

echo "Hola $name. Supuestamente tienes $age años de edad";
?>

Dentro de php la variable súper global $_POST contiene un array asociativo con los datos del formulario. Dentro de los corchetes indicamos el valor del atributo name de cada elemento input del formulraio html. En este caso hemos utilizado el método post en el formulario. Sin embargo si en su lugar el atributo hubiese sido get, dentro de php el array a utilizar es $_GET

Capturar la fecha, y guardar todos los datos en un documento

Al obtener directamente la fecha y la hora con el script se capturan los datos del servidor. Y si este se encuentra en otra zona horaria estamos en problemas.
Agregar lo siguiente en la parte superior del script, y problema solucionado.

ini_set('date.timezone', 'America/Argentina/Buenos_Aires');

Hay que cambiar el segundo argumento por la zona horaria deseada.

Listado de zonas horarias admitidas


<?php
ini_set('date.timezone','America/Argentina/Buenos_Aires');

$fecha = date("d.m.Y");
$hora = date("g:i A");
$nombre = htmlspecialchars($_POST["nombre"]);
$edad = (int)$_POST["edad"];
$datos = "$hora del $fecha\nNombre: $nombre\nEdad: $edad\n\n";

file_put_contents('datos.txt', $datos, FILE_APPEND);

echo "Datos guardados correctamente<br><br>";
echo "<button onClick='window.history.go(-1)'>Volver a la página anterior</button>";
?>?>

Aquí hemos agregado algunos elementos nuevos:

Descarga del ejemplo