Formularios¶
Introducción a HTTP y el método GET¶
HTTP es un protocolo sin estado, lo que significa que cada petición que hacemos a un servidor es independiente: el servidor no recuerda lo que ocurrió en peticiones anteriores. Por eso, si queremos mantener o compartir información entre dos peticiones, debemos enviarla explícitamente en cada una.
Una forma común de hacerlo es incluyendo los datos en la URL, lo cual se logra utilizando los métodos GET o POST. En este apartado nos vamos a centrar en el método GET, que es el que se usa habitualmente para enviar parámetros a través de la URL. Es por ello que, a la hora de enviar los datos via URL, se hace con el formato var1=valor1&var2=valor2…
. Por ejemplo: ejemplo.php?nombre=Bruce+apellido1=Wayne
El proceso consta de dos pasos principales:
- Generar un formulario con
action='archivo.php'
ymethod='GET'
. - En el archivo
.php
, leer los datos enviados a través de la superglobal$_GET['nombreVar']
.
Es recomendable separar el código HTML del PHP siempre que sea posible. A continuación, se muestra cómo realizar esta separación.
Ejemplo formulario¶
El código HTML sería:
<form action="saluda.php" method="get">
<p><label for="nombre">Nombre: </label>
<input type="text" name="nombre" id="nombre"></p>
<p><label for="apellido1">Primer apellido:</label>
<input type="text" name="apellido1" id="apellido1"></p>
<p><input type="submit" value="enviar"></p>
</form>
Y recogemos los datos:
<?php
$nombre = $_GET["nombre"];
$apellido1 = $_GET["apellido1"];
echo "Hola $nombre $apellido1";
?>
Todo en un único archivo (no recomendado)¶
Si quisiéramos combinar todo en un único archivo (aunque es mejor separar el código HTML del PHP), podríamos hacerlo de la siguiente manera:
<form action="" method="get">
<p><label for="nombre">Nombre: </label>
<input type="text" name="nombre" id="nombre"></p>
<p><label for="apellido1">Primer apellido:</label>
<input type="text" name="apellido1" id="apellido1"></p>
<input type="submit" value="enviar">
</form>
<?php
if(isset($_GET['nombre'])) {
$nombre = $_GET["nombre"];
$apellido1 = $_GET["apellido1"];
echo "Hola $nombre $apellido1";
}
?>
Consideraciones adicionales¶
- En el caso de que los datos sean enviados mediante el método
GET
, estos aparecerán en la URL, lo cual no es seguro para datos sensibles. - En futuras unidades se verá que también se pueden enviar datos con
POST
, lo cual es más seguro ya que los datos no se muestran en la URL.
Actividades¶
-
AC 218. (RA3 / CE3e CE3f / IC1 / 3p) - Se solicita revisar el código desarrollado en la actividad AC203. En esta ocasión, es necesario generar dos documentos: en el primer archivo se creará un formulario para introducir los datos, y en el segundo archivo se recogerán esos datos y se generará una tabla con ellos.
-
AR 219. (RA3 / CE3e CE3f CE3g / IC1 / 3p) - Tu supervisor requiere desarrollar un programa que, tras leer la edad de una persona, muestre la edad que tendrá dentro de 10 años y la que tenía hace 10 años. Además, se deberá mostrar el año en ambos casos. Por último, se debe calcular y mostrar el año de jubilación, suponiendo que se trabajará hasta los 67 años. En este caso, no es necesario crear un formulario previo.
Tip
$anyoActual = date("Y");
-
PR 220. (RA3 / CE3e CE3f CE3g / IC2 / 5p) Se solicita la creación de un sistema de acceso básico para el instituto. El sistema constará de:
login.php
: Un formulario de entrada, que solicita el usuario y contraseña.compruebaLogin.php
: Recibe los datos y comprueba si son correctos (los usuarios se guardan en un array asociativo) pasando el control mediante el uso de include a:ok.php
: El usuario introducido es correctoko.php
: El usuario es incorrecto. Informar si ambos están mal o solo la contraseña. Volver a mostrar el formulario de acceso.
-
RE 221. (RA3 / CE3a CE3b CE3c CE3d CE3e CE3f CE3g / IC2 / 10p) - Es el momento de sentar las bases del reto. Piensa la estructura que ha de tener para tí el prototipo a realizar. Toda solución ha de tener mínimo:
- Tres vistas.
- Utilizar formularios.
Se debe entregar un informe con las decisiones tomadas en la elaboración del prototipo.
Se utilizará una rúbrica para su evaluación en base a la siguiente lista de cotejo:
- Se utilizan los tipos de variables adecuados.
- Manejo de arrays
- Uso de funciones y nombradas adecuadamente.
- Operaciones de cálculo correctas.