Ejercicios de Formularios

Objetivo

Practicar el uso de formularios HTML con PHP: métodos GET y POST, recepción y validación de datos, campos de texto, contraseñas, casillas, radios, listas desplegables, subida de archivos, autoprocesamiento y buenas prácticas de seguridad, mediante una colección de ejercicios de dificultad creciente.

Indicaciones generales

Ejercicios

1. Formulario de saludo con GET

Crea un formulario con un campo de texto para el nombre y un botón de envío usando el método GET. Al enviarlo, muestra un saludo personalizado con el nombre recibido.

Contenidos: formulario HTML, método GET, $_GET, echo.

2. Formulario de saludo con POST

Repite el ejercicio anterior usando el método POST. Observa la diferencia en la URL y explica brevemente por qué el nombre ya no aparece en ella.

Contenidos: método POST, $_POST, diferencias GET/POST.

3. Suma de dos números

Crea un formulario con dos campos numéricos y un botón. Al enviarlo con POST, muestra la suma de ambos números. Comprueba que los campos no estén vacíos antes de operar.

Contenidos: formularios, $_POST, operadores aritméticos, isset().

4. Calculadora básica con operación seleccionable

Añade al ejercicio anterior una lista desplegable para elegir la operación (suma, resta, multiplicación, división). Según la opción seleccionada, realiza el cálculo correspondiente. Controla la división entre cero.

Contenidos: <select>, $_POST, estructuras de decisión, validación.

5. Conversor de euros a dólares

Crea un formulario que reciba una cantidad en euros y una tasa de cambio. Muestra el resultado en dólares con dos decimales usando number_format().

Contenidos: formularios, operadores aritméticos, funciones de formato.

6. Formulario con valores por defecto

Crea un formulario con un campo de texto y otro numérico. Al autoprocesarlo, si hay errores, vuelve a mostrar el formulario conservando los valores introducidos por el usuario.

Contenidos: autoprocesamiento, value con htmlspecialchars(), arrays de errores.

7. Validación de mayoría de edad

Crea un formulario que pida el nombre y la edad. Si la edad es menor de 18, muestra un mensaje indicando que no puede acceder. Si es mayor o igual, muestra un saludo de bienvenida.

Contenidos: $_POST, estructuras de decisión, validación.

8. Formulario de registro con validación

Crea un formulario con los campos: nombre, correo electrónico y edad. Valida que el nombre no esté vacío, que el correo tenga un formato válido con filter_var() y que la edad sea un número entre 0 y 120. Muestra los errores si los hay.

Contenidos: validación, filter_var(), arrays de errores, autoprocesamiento.

9. Formulario con contraseña

Crea un formulario que pida usuario y contraseña. Comprueba que la contraseña tenga al menos 8 caracteres y que el usuario no esté vacío. Si todo es correcto, muestra un mensaje de registro exitoso. Usa password_hash() para generar el hash de la contraseña y muéstralo (solo con fines didácticos).

Contenidos: <input type="password">, validación, password_hash().

10. Confirmación de contraseña

Amplía el ejercicio anterior añadiendo un campo de confirmación de contraseña. Valida que ambas coincidan. Si no coinciden, muestra un error.

Contenidos: validación, comparación de cadenas, autoprocesamiento.

11. Formulario con casillas de verificación

Crea un formulario con varias casillas de aficiones (leer, música, deporte, cine). Al enviarlo, muestra un listado con las aficiones seleccionadas. Si no se selecciona ninguna, muestra un mensaje indicándolo.

Contenidos: checkbox, name="aficiones[]", $_POST con arrays, foreach.

12. Formulario con botones de opción

Crea un formulario con un grupo de radios para elegir el turno (mañana, tarde, noche) y otro para elegir el nivel (básico, intermedio, avanzado). Muestra la combinación seleccionada.

Contenidos: radio, agrupación por name, $_POST.

13. Formulario con lista desplegable simple

Crea un formulario con una lista desplegable de ciudades y un botón de envío. Al enviarlo, muestra la ciudad seleccionada y una breve descripción obtenida de un array asociativo definido en el propio script.

Contenidos: <select>, $_POST, arrays asociativos.

14. Lista desplegable de selección múltiple

Crea un formulario con una lista de lenguajes de programación con multiple. Al enviarlo, muestra todos los lenguajes seleccionados separados por comas usando implode().

Contenidos: <select multiple>, name="lenguajes[]", implode(), foreach.

15. Formulario con área de texto

Crea un formulario con un campo de texto para el título y un <textarea> para el comentario. Al enviarlo, muestra el título y el comentario, y calcula el número de caracteres del comentario con strlen().

Contenidos: <textarea>, $_POST, funciones de cadenas.

16. Cuestionario de opción múltiple

Crea un cuestionario con tres preguntas, cada una con varias opciones de tipo radio. Al enviarlo, corrige las respuestas comparando con las correctas almacenadas en un array y muestra la puntuación obtenida.

Contenidos: radios, arrays asociativos, bucles, estructuras de decisión.

17. Formulario con campos ocultos

Crea un formulario que envíe un campo oculto con un identificador de producto y un campo visible con la cantidad. Al procesarlo, muestra el identificador y la cantidad, calculando el total a partir de un precio definido en el script.

Contenidos: <input type="hidden">, $_POST, operadores aritméticos.

18. Validación de formulario con errores mostrados junto a cada campo

Crea un formulario con nombre, correo y edad. Al enviarlo, valida cada campo y muestra los mensajes de error justo al lado del campo correspondiente, conservando los valores válidos introducidos.

Contenidos: autoprocesamiento, arrays asociativos de errores, htmlspecialchars().

19. Formulario de búsqueda con GET

Crea un formulario de búsqueda que envíe un término por GET. Al recibirlo, busca ese término dentro de un array de productos definido en el script y muestra los que coincidan parcialmente, usando stripos().

Contenidos: método GET, $_GET, arrays, bucles, funciones de cadenas.

20. Formulario con checkbox para aceptar condiciones

Crea un formulario de registro con nombre, correo y una casilla para aceptar las condiciones. El formulario no se procesará si la casilla no está marcada. Muestra un error en ese caso.

Contenidos: checkbox, validación, estructuras de decisión.

21. Subida de un archivo de texto

Crea un formulario que permita subir un archivo de texto. Al recibirlo, comprueba que no haya errores, muéstralo en pantalla con file_get_contents() y muestra también su tamaño en bytes.

Contenidos: enctype="multipart/form-data", $_FILES, file_get_contents(), filesize().

22. Subida de archivo con validación de tipo y tamaño

Amplía el ejercicio anterior para aceptar solo archivos con extensión .txt o .pdf y con un tamaño máximo de 1 MB. Si no cumple los requisitos, muestra un error. Si es correcto, guarda el archivo en una carpeta subidas/ con un nombre generado con uniqid().

Contenidos: $_FILES, validación de extensión, move_uploaded_file(), uniqid().

23. Formulario de contacto con varios campos y validación completa

Crea un formulario de contacto con nombre, correo, asunto (lista desplegable) y mensaje (textarea). Valida todos los campos, comprueba el formato del correo y muestra un resumen de los datos enviados si todo es correcto.

Contenidos: todos los tipos de campo, validación, arrays de errores, autoprocesamiento.

24. Formulario con valores preseleccionados tras un error

Crea un formulario con campos de texto, radios y un select. Al enviarlo, valida los datos. Si hay errores, vuelve a mostrar el formulario marcando las opciones previamente seleccionadas y conservando los textos introducidos.

Contenidos: autoprocesamiento, checked, selected, htmlspecialchars().

25. Encuesta con cálculo de resultados

Crea una encuesta con tres preguntas de tipo radio y dos de tipo checkbox. Al enviarla, calcula la puntuación total según unos valores definidos en un array y muestra el resultado con un mensaje según el rango obtenido.

Contenidos: radios, checkbox, arrays, bucles, estructuras de decisión.

26. Formulario de pedido con cálculo de total

Crea un formulario con varios productos (checkbox con cantidades en campos numéricos). Al enviarlo, calcula el total del pedido usando un array de precios y muestra el desglose y el total con IVA.

Contenidos: checkbox, campos numéricos, arrays, bucles, operadores aritméticos.

27. Formulario con validación mediante expresiones regulares

Crea un formulario que pida un teléfono y un código postal. Valida el teléfono con el patrón /^[0-9]{9}$/ y el código postal con /^[0-9]{5}$/ usando preg_match(). Muestra los errores si no coinciden.

Contenidos: preg_match(), expresiones regulares, validación.

28. Formulario con múltiples pasos simulados

Crea un formulario que primero pida el nombre y, tras enviarlo, muestre un segundo formulario que pida la edad, conservando el nombre en un campo oculto. Al final, muestra un resumen con ambos datos.

Contenidos: campos ocultos, autoprocesamiento, estructuras de decisión.

29. Formulario con subida de imagen y generación de miniatura

Crea un formulario que permita subir una imagen JPG o PNG de menos de 2 MB. Al recibirla, comprueba el tipo MIME con getimagesize(), guárdala en subidas/ con un nombre único y muestra la imagen en pantalla con una etiqueta <img>.

Contenidos: $_FILES, validación de tipo MIME, move_uploaded_file(), generación de HTML.

30. Aplicación integradora: gestión de inscripciones

Crea un formulario de inscripción a un taller con los campos: nombre, correo, teléfono, taller elegido (lista desplegable con tres opciones), turno (radios), aficiones (checkbox) y aceptación de condiciones (checkbox). Valida todos los campos, muestra los errores si los hay, y si todo es correcto genera una ficha HTML con los datos y un código de inscripción generado con uniqid(). Guarda además los datos en un archivo inscripciones.txt usando file_put_contents() con modo FILE_APPEND.

Contenidos: todos los contenidos de la unidad: formularios, GET/POST, validación, arrays, funciones, manejo de archivos, seguridad básica.

Bibliografía