Backend real
PHP, formularios, bases de datos MySQL y las operaciones CRUD que mueven cualquier aplicación real.
0 / 5 lecciones completadas (0%)
PHP desde cero
Lección 02Formularios + validación
Lección 03Conexión PHP ↔ MySQL
Lección 04CRUD completo
Lección 05Seguridad básica (SQL Injection)
PHP desde cero
PHP es un lenguaje que se ejecuta en el servidor, no en el navegador del visitante. Esto significa que puede leer archivos, hablar con bases de datos y generar HTML dinámico antes de enviarlo al usuario. El código PHP va entre las etiquetas <?php y ?>.
<?php
$nombre = "Jorge";
$edad = 15;
echo "<h1>Hola, " . $nombre . "</h1>";
if ($edad >= 13) {
echo "<p>Puedes acceder al curso DIGITOMENORES.</p>";
}
?>
¿Dónde se ejecuta el código PHP?
Formularios + validación
Un formulario recoge datos del usuario (nombre, email, mensaje) y los envía al servidor. PHP los recibe mediante $_POST o $_GET, pero nunca hay que confiar en ellos a ciegas: siempre se deben validar antes de usarlos, comprobando que el email tiene formato correcto o que los campos obligatorios no están vacíos.
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = trim($_POST["email"]);
if (empty($email)) {
echo "El email es obligatorio.";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "El email no tiene un formato valido.";
} else {
echo "Email correcto: " . htmlspecialchars($email);
}
}
?>
<form method="POST">
<input type="email" name="email" required>
<button type="submit">Enviar</button>
</form>
¿Por qué no basta con validar el email solo en JavaScript, en el navegador?
Conexión PHP ↔ MySQL
MySQL es un gestor de bases de datos: guarda información en tablas, como una gran hoja de cálculo organizada. PHP se conecta a MySQL usando la extensión PDO o mysqli para leer y escribir datos, por ejemplo los usuarios registrados en una web.
<?php
$host = "localhost";
$bd = "digitomenores";
$usuario = "usuario_bd";
$clave = "clave_segura";
try {
$pdo = new PDO("mysql:host=$host;dbname=$bd;charset=utf8mb4", $usuario, $clave);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Conexion establecida correctamente.";
} catch (PDOException $e) {
echo "Error de conexion: " . $e->getMessage();
}
?>
¿Qué hace PDO en el ejemplo anterior?
CRUD completo
CRUD son las cuatro operaciones básicas sobre datos: Crear (Create), Leer (Read), Actualizar (Update) y Borrar (Delete). Casi cualquier aplicación —una lista de tareas, una tienda, una red social— es en el fondo un CRUD sobre una o varias tablas de base de datos.
<?php
// CREATE
$pdo->prepare("INSERT INTO tareas (titulo) VALUES (?)")->execute([$titulo]);
// READ
$tareas = $pdo->query("SELECT * FROM tareas")->fetchAll();
// UPDATE
$pdo->prepare("UPDATE tareas SET titulo = ? WHERE id = ?")->execute([$nuevoTitulo, $id]);
// DELETE
$pdo->prepare("DELETE FROM tareas WHERE id = ?")->execute([$id]);
?>
¿Qué letra del CRUD corresponde a modificar un dato ya existente, como cambiar el título de una tarea?
Seguridad básica (SQL Injection)
Si un formulario mete directamente lo que escribe el usuario dentro de una consulta SQL, una persona con malas intenciones podría escribir código SQL en vez de un nombre normal y manipular la base de datos. Esto se llama inyección SQL, y se evita usando siempre consultas preparadas (prepared statements).
// INSEGURO - nunca hagas esto:
$sql = "SELECT * FROM usuarios WHERE nombre = '" . $_POST["nombre"] . "'";
// SEGURO - con consulta preparada:
$stmt = $pdo->prepare("SELECT * FROM usuarios WHERE nombre = ?");
$stmt->execute([$_POST["nombre"]]);
$usuario = $stmt->fetch();
¿Por qué las consultas preparadas evitan la inyección SQL?