Saltar a contenido

🟢 Módulo 4: Formularios y Métodos HTTP en PHP

En este módulo aprenderás a: ✔ Enviar datos con los métodos GET y POST.
Validar y limpiar datos para evitar errores y ataques.
Subir archivos con PHP.
Usar sesiones y cookies para recordar información entre páginas.


📌 1. Envío de Datos con GET y POST

Los formularios HTML pueden enviar datos a PHP mediante los métodos GET o POST.

Diferencias entre GET y POST

Método Características Cuándo usarlo
GET Envía datos en la URL Cuando la información no es sensible (ej. búsqueda)
POST Envía datos ocultos Cuando la información es privada o grande (ej. login)

🔹 Ejemplo de un formulario con GET

<form action="procesar.php" method="GET">
    <label>Nombre:</label>
    <input type="text" name="nombre">
    <button type="submit">Enviar</button>
</form>
📌 Cómo acceder a los datos en PHP (procesar.php)
<?php
if (isset($_GET['nombre'])) {
    echo "Hola, " . $_GET['nombre'];
}
?>
Los datos viajan en la URL: procesar.php?nombre=Juan.


🔹 Ejemplo de un formulario con POST

<form action="procesar.php" method="POST">
    <label>Contraseña:</label>
    <input type="password" name="clave">
    <button type="submit">Enviar</button>
</form>
📌 Cómo acceder a los datos en PHP (procesar.php)
<?php
if (isset($_POST['clave'])) {
    echo "Contraseña recibida.";
}
?>
Los datos no aparecen en la URL, son más seguros.


📌 2. Validación y Sanitización de Datos

Antes de usar los datos del usuario, debemos validarlos y sanitizarlos para evitar ataques y errores.

🔹 Ejemplo de validación y sanitización

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $nombre = trim($_POST["nombre"]); // Quita espacios
    $nombre = htmlspecialchars($nombre); // Evita código malicioso
    if (!empty($nombre)) {
        echo "Hola, $nombre";
    } else {
        echo "El campo está vacío.";
    }
}
?>
📌 htmlspecialchars() evita ataques XSS convirtiendo caracteres especiales (<, >, ", ').


📌 3. Subida de Archivos con $_FILES

Podemos permitir que los usuarios suban archivos con PHP.

🔹 Formulario para subir archivos

<form action="subir.php" method="POST" enctype="multipart/form-data">
    <input type="file" name="archivo">
    <button type="submit">Subir</button>
</form>
📌 Cómo manejar la subida de archivos en PHP (subir.php)
<?php
if ($_FILES["archivo"]["error"] == 0) {
    $ruta = "uploads/" . $_FILES["archivo"]["name"]; // Ruta destino
    move_uploaded_file($_FILES["archivo"]["tmp_name"], $ruta);
    echo "Archivo subido correctamente.";
} else {
    echo "Error al subir archivo.";
}
?>
move_uploaded_file() mueve el archivo a la carpeta uploads/.


📌 4. Manejo de Sesiones y Cookies

Las sesiones y cookies permiten recordar datos entre páginas.

🔹 Sesiones (session_start())

Las sesiones almacenan datos en el servidor.

📌 Iniciar sesión y guardar datos

<?php
session_start();
$_SESSION["usuario"] = "Juan";
echo "Sesión iniciada.";
?>
📌 Acceder a los datos en otra página
<?php
session_start();
echo "Hola, " . $_SESSION["usuario"];
?>
📌 Cerrar sesión y eliminar datos
<?php
session_start();
session_destroy(); // Elimina la sesión
?>


🔹 Cookies (setcookie())

Las cookies almacenan datos en el navegador del usuario.

📌 Crear una cookie que dura 1 hora

<?php
setcookie("usuario", "Juan", time() + 3600, "/");
?>
📌 Leer una cookie
<?php
if (isset($_COOKIE["usuario"])) {
    echo "Hola, " . $_COOKIE["usuario"];
}
?>
📌 Eliminar una cookie
<?php
setcookie("usuario", "", time() - 3600, "/");
?>
Diferencia: Las sesiones almacenan datos en el servidor, las cookies en el navegador.


🎯 Resumen del Módulo

GET y POST: Métodos para enviar datos de formularios.
Validación y sanitización: Evitar errores y ataques.
Subida de archivos: Permitir a los usuarios cargar archivos.
Sesiones y cookies: Recordar datos entre páginas.