Introducción a formularios en PHP (10 minutos)
Explicación:
Los formularios HTML permiten a los usuarios enviar datos (como nombres o edades) al servidor, donde PHP los procesa para generar respuestas dinámicas (por ejemplo, mostrar un mensaje o guardar datos).
Componentes clave:
- Formulario HTML: Usa la etiqueta <form> con:
- action: URL del script PHP que procesa los datos (puede ser el mismo archivo).
- method: Método de envío (GET o POST).
- PHP: Recupera los datos enviados y los procesa.
Métodos de envío:
- GET:
- Envía datos en la URL (por ejemplo, pagina.php?nombre=Ana).
- Visible, limitado en tamaño, usado para búsquedas o datos no sensibles.
- Acceso en PHP: $_GET["nombre"].
- POST:
- Envía datos en el cuerpo de la solicitud (no visible en la URL).
- Más seguro, soporta más datos, usado para formularios sensibles (como contraseñas).
- Acceso en PHP: $_POST["nombre"].
Por qué es importante:
- Procesar formularios es fundamental en Laravel para manejar datos de usuarios, como registros o comentarios, en vistas Blade y controladores.
Ejemplo básico:
<form action="procesar.php" method="post">
<input type="text" name="nombre">
<button type="submit">Enviar</button>
</form>
Punto clave: GET y POST determinan cómo los datos llegan al servidor, y PHP los procesa para generar contenido dinámico.
Actividad rápida (2 minutos):
Piensa en un formulario que hayas usado (por ejemplo, un login). Escribe en papel si usaría GET o POST y por qué. Ejemplo:
- Login → POST, porque los datos (contraseña) son sensibles.
Métodos GET y POST en acción (15 minutos)
Explicación:
Aprendamos a crear formularios y procesar datos con GET y POST.
Estructura de un formulario:
- <input name="clave">: El atributo name define la clave para $_GET o $_POST.
- action="script.php": Especifica el archivo PHP que procesa el formulario.
- Si action="" o está vacío, el formulario se envía al mismo archivo.
Procesamiento en PHP:
- GET:
$dato = $_GET["clave"]; echo "Dato recibido: $dato";
- POST:
$dato = $_POST["clave"]; echo "Dato recibido: $dato";
Precauciones:
- Verifica si los datos existen con isset($_POST["clave"]) para evitar errores.
- Escapa datos para seguridad (introducido aquí, detallado en lecciones futuras).
Ejemplo práctico (como pide la lección):
Formulario que recibe un nombre y lo muestra:
<!DOCTYPE html>
<html lang="es">
<head>
<title>Procesar Nombre</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 600px;
margin: 20px auto;
text-align: center;
}
input, button {
padding: 8px;
margin: 5px;
font-size: 1rem;
}
button {
background-color: #2c3e50;
color: white;
border: none;
cursor: pointer;
}
.resultado {
margin-top: 20px;
font-weight: bold;
}
</style>
</head>
<body>
<h1>Ingresa tu Nombre</h1>
<form method="post" action="">
<input type="text" name="nombre" placeholder="Tu nombre">
<button type="submit">Enviar</button>
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["nombre"])) {
$nombre = htmlspecialchars($_POST["nombre"]);
if ($nombre !== "") {
echo "<p class='resultado'>Hola, $nombre!</p>";
} else {
echo "<p class='resultado'>Por favor, ingresa un nombre.</p>";
}
}
?>
</body>
</html>
Cómo funciona:
- <form method="post" action="">: Usa POST, procesa en el mismo archivo.
- <input name="nombre">: Captura el nombre.
- $_SERVER["REQUEST_METHOD"] == "POST": Verifica que el formulario fue enviado.
- isset($_POST["nombre"]): Confirma que el campo existe.
- htmlspecialchars(): Escapa caracteres para evitar problemas de seguridad (como XSS).
- Condicional: Muestra el nombre o un mensaje de error si está vacío.
Cómo probarlo:
- Con XAMPP:
- Guarda como nombre.php en htdocs.
- Accede: http://localhost/nombre.php.
- Con Repl.it: Pega el código y ejecuta.
- Prueba:
- Ingresa "Ana" → "Hola, Ana!".
- Deja vacío → "Por favor, ingresa un nombre.".
- Ingresa "<script>" → Texto escapado, no ejecutado.
- Revisa la consola del servidor (php_error.log en XAMPP) si hay errores.
Resultado esperado:
- Un formulario simple con un campo y botón.
- Al enviar, muestra un mensaje personalizado o un error si está vacío.
Punto clave: POST es ideal para formularios, y PHP permite procesar datos de forma segura y dinámica, como en Laravel.
Actividad rápida (3 minutos):
Modifica el ejemplo (en papel o editor) para usar GET en lugar de POST. Solución sugerida:
<form method="get" action="">
<!-- ... -->
if ($_SERVER["REQUEST_METHOD"] == "GET" && isset($_GET["nombre"])) {
$nombre = htmlspecialchars($_GET["nombre"]);
Procesamiento de datos y buenas prácticas (15 minutos)
Explicación:
Procesar datos implica validar, limpiar, y usar la información enviada.
Buenas prácticas:
- Validación:
- Verifica campos vacíos: if (empty($dato)).
- Comprueba formatos (por ejemplo, números con is_numeric()).
- Seguridad:
- Usa htmlspecialchars() para evitar inyecciones XSS.
- Evita mostrar datos crudos ($_POST["dato"]) sin filtrar.
- Persistencia:
- Mantén los valores del formulario tras el envío para mejor experiencia:
<input name="nombre" value="<?php echo isset($_POST['nombre']) ? htmlspecialchars($_POST['nombre']) : ''; ?>">
- Mantén los valores del formulario tras el envío para mejor experiencia:
-
Método adecuado:
- Usa POST para datos sensibles o largos.
- Usa GET para búsquedas o filtros visibles.
Ejemplo avanzado:
Añadir validación de longitud al nombre:
if (isset($_POST["nombre"])) {
$nombre = htmlspecialchars($_POST["nombre"]);
if ($nombre === "") {
echo "<p class='resultado'>Nombre vacío.</p>";
} elseif (strlen($nombre) < 2) {
echo "<p class='resultado'>El nombre debe tener al menos 2 caracteres.</p>";
} else {
echo "<p class='resultado'>Hola, $nombre!</p>";
}
}
Punto clave: Procesar datos con validación y seguridad es esencial en Laravel para manejar formularios de forma robusta.
Actividad rápida (3 minutos):
Escribe en papel o editor cómo añadirías un mensaje si el nombre tiene más de 20 caracteres. Solución sugerida:
elseif (strlen($nombre) > 20) {
echo "<p class='resultado'>El nombre es demasiado largo.</p>";
}
Resumen y preparación para la tarea (20 minutos)
Resumen:
- Formularios: Conectan HTML (<form>) y PHP ($_GET, $_POST).
- GET: Datos en la URL, para búsquedas simples.
- POST: Datos seguros, para formularios complejos.
- Procesamiento: Validar, limpiar, y mostrar datos con PHP.
- Ejemplo: Formulario que muestra un nombre con validación básica.
- Estos conceptos son la base para formularios en Laravel, como registros o contactos.
Preparación para la tarea:
La tarea pide crear un formulario PHP que reciba una edad y muestre si el usuario es mayor de edad (≥18).
- Estrategia:
- Crea un formulario HTML con un campo numérico (<input type="number">).
- Usa POST para procesar la edad.
- Valida que la edad sea un número y no esté vacía.
- Usa un condicional (if) para determinar si es mayor de edad.
- Muestra el resultado con echo.
- Lógica básica:
if (isset($_POST["edad"]) && is_numeric($_POST["edad"])) { $edad = (int)$_POST["edad"]; if ($edad >= 18) { echo "Eres mayor de edad."; } else { echo "Eres menor de edad."; } }
Punto clave: La tarea refuerza el manejo de formularios y condicionales, habilidades clave para procesar datos en Laravel.
Tarea práctica: Crea un formulario PHP que reciba edad y muestre si es mayor de edad
Instrucciones:
- Crea un programa PHP con un formulario que reciba la edad del usuario.
- Usa:
- Un formulario HTML con method="post".
- Un campo <input type="number" name="edad">.
- PHP para procesar la edad con $_POST.
- Un condicional para verificar si la edad es ≥18.
- echo para mostrar el resultado (por ejemplo, "Eres mayor de edad").
- Asegúrate de:
- Validar que el campo no esté vacío y sea numérico.
- Mostrar un mensaje de error si la entrada es inválida.
- Incluir estilos básicos con CSS.
- Usa el siguiente código como guía:
<!DOCTYPE html>
<html lang="es">
<head>
<title>Verificar Edad</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 600px;
margin: 20px auto;
text-align: center;
}
h1 {
color: #2c3e50;
}
input, button {
padding: 10px;
margin: 5px;
font-size: 1rem;
}
button {
background-color: #2c3e50;
color: white;
border: none;
cursor: pointer;
}
.resultado {
margin-top: 20px;
font-weight: bold;
}
.error {
color: red;
}
</style>
</head>
<body>
<h1>Verifica tu Edad</h1>
<form method="post" action="">
<label for="edad">Edad:</label>
<input type="number" name="edad" id="edad" placeholder="Tu edad" value="<?php echo isset($_POST['edad']) ? htmlspecialchars($_POST['edad']) : ''; ?>">
<button type="submit">Verificar</button>
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST["edad"]) && $_POST["edad"] !== "" && is_numeric($_POST["edad"])) {
$edad = (int)$_POST["edad"];
if ($edad >= 0) {
if ($edad >= 18) {
echo "<p class='resultado'>Eres mayor de edad.</p>";
} else {
echo "<p class='resultado'>Eres menor de edad.</p>";
}
} else {
echo "<p class='error'>La edad no puede ser negativa.</p>";
}
} else {
echo "<p class='error'>Por favor, ingresa una edad válida.</p>";
}
}
?>
</body>
</html>
- Prueba el archivo:
- Con XAMPP:
- Guarda como edad.php en htdocs.
- Accede: http://localhost/edad.php.
- Con Repl.it: Pega el código y ejecuta.
- Prueba:
- Ingresa 25 → "Eres mayor de edad.".
- Ingresa 15 → "Eres menor de edad.".
- Ingresa texto o vacío → "Por favor, ingresa una edad válida.".
- Ingresa -5 → "La edad no puede ser negativa.".
- Revisa php_error.log (en XAMPP) para depurar errores.
- Con XAMPP:
Ejemplo de solución esperada:
El código anterior es funcional. En el navegador:
- Un formulario con un campo numérico estilizado.
- Al enviar, muestra si el usuario es mayor o menor de edad, o un error si la entrada es inválida.
- El valor ingresado persiste tras el envío.
Tiempo estimado: 20-30 minutos (puedes hacerlo después de la lección).
Entregable: Archivo edad.php que procese la edad y muestre el resultado. Puedes compartir el código o describirlo para que lo revise.
Consejo: Prueba con casos extremos (0, 18, 17) y asegúrate de que los estilos sean claros en móviles.