Principales errores de desarrolladores PHP principiantes — parte 4: Trabajo con datos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Principales errores de desarrolladores PHP principiantes — parte 4: Trabajo con datos



Continuamos la serie de artículos para quienes estudian PHP y quieren escribir código de mayor calidad. En esta parte analizaremos tres errores críticos relacionados con el procesamiento de datos de usuario, el almacenamiento en caché y la tipificación estricta. Si te encuentras en la etapa de aprendizaje de PHP, estos ejemplos te ayudarán a evitar problemas típicos en proyectos reales.



1. Confiar en los datos de los arrays superglobales



Uno de los errores más comunes para desarrolladores PHP principiantes es usar datos de $_GET, $_POST o $_REQUEST sin verificación ni filtrado. Esto es un camino directo a ataques XSS e inyecciones SQL.



Enfoque incorrecto

<?php// ¡Peligroso! El usuario puede enviar un script$name = $_POST['username'];echo "¡Hola, $name!";?>


Enfoque correcto

<?php// Usamos filtrado y escape$name = htmlspecialchars(strip_tags(trim($_POST['username'] ?? '')), ENT_QUOTES, 'UTF-8');echo "¡Hola, " . $name . "!";?>


¿Qué hacer? Siempre procesa los datos entrantes. Para trabajar con bases de datos usa consultas preparadas (PDO o MySQLi), y para la salida — htmlspecialchars(). Esto es la base de la seguridad en programación en PHP.



2. Falta de almacenamiento en caché de consultas pesadas



Muchos novatos ejecutan la misma consulta SQL o un cálculo complejo en cada actualización de página. Esto mata el rendimiento, especialmente si hay muchas consultas.



Ejemplo del problema

<?php// Cada vez solicitamos datos de la BD$users = $db->query("SELECT * FROM users WHERE active = 1")->fetchAll();foreach ($users as $user) {    echo $user['name'];}?>


Solución con caché

<?php// Usamos almacenamiento en caché simple de archivos$cacheFile = 'cache/users_active.cache';$cacheTime = 300; // 5 minutos

if (file_exists($cacheFile) && (time() - filemtime($cacheFile)) < $cacheTime) { $users = unserialize(file_get_contents($cacheFile));} else { $users = $db->query("SELECT * FROM users WHERE active = 1")->fetchAll(); file_put_contents($cacheFile, serialize($users));}

foreach ($users as $user) { echo $user['name'];}?>


Para proyectos más complejos usa Memcached o Redis. Esto acelerará el aprendizaje de PHP en cuanto a la comprensión de la arquitectura de aplicaciones de alta carga.



3. Ignorar la tipificación estricta



PHP es un lenguaje de tipificación dinámica, pero desde la versión 7.0 existe la posibilidad de activar el modo estricto. Los principiantes a menudo olvidan esto, lo que lleva a errores inesperados.



Situación típica

<?phpfunction calculateSum($a, $b) {    return $a + $b;}

echo calculateSum(10, '5'); // Resultado: 15 (la cadena se convirtió en número)?>


Corrección

<?phpdeclare(strict_types=1); // Activamos el modo estricto

function calculateSum(int $a, int $b): int { return $a + $b;}

// echo calculateSum(10, '5'); // Fatal error: Uncaught TypeErrorecho calculateSum(10, 5); // 15?>


La tipificación estricta ayuda a detectar errores en la etapa de desarrollo, no en producción. Recomendamos a todos los PHP para principiantes acostumbrarse desde ya a especificar los tipos de argumentos y valores de retorno.



Bonus: trabajar con sesiones sin verificación



Otro error frecuente es escribir en la sesión sin verificar la existencia de la clave. Esto puede provocar advertencias.



<?phpsession_start();

// Error: si la clave no existe, obtendremos una advertencia$_SESSION['counter'] = $_SESSION['counter'] + 1;

// Correcto$_SESSION['counter'] = ($_SESSION['counter'] ?? 0) + 1;?>

Blogs

Book Recommendations