𝟭𝟬 𝗘𝗿𝗿𝗼𝗿𝗲𝘀 𝗱𝗲 𝗣𝗛𝗣 𝗤𝘂𝗲 𝗥𝗼𝗺𝗽𝗲𝗻 𝗣𝗿𝗼𝘆𝗲𝗰𝘁𝗼𝘀 𝗥𝗲𝗮𝗹𝗲𝘀
El código funciona en tu computadora. Lo subes al servidor. Todo se rompe. No hay errores en los logs. Simplemente ves una salida incorrecta.
Estos errores no provienen de libros de texto. Provienen de sistemas de inicio de sesión, tiendas y APIs reales. Parecen estar bien durante las revisiones de código, pero fallan en producción.
Aquí están los errores del #11 al #20 y cómo solucionarlos.
• Bucles infinitos Olvidar incrementar un contador bloquea el proceso de PHP. Esto puede colapsar todo tu servidor. Solución: Asegúrate siempre de que los contadores de tus bucles aumenten.
• Problemas de sensibilidad a mayúsculas y minúsculas PHP ve "Admin" y "admin" como cadenas diferentes. Esto rompe el control de acceso. Solución: Usa strtolower() antes de comparar cadenas.
• Matemáticas y truncamiento Usar (int) en un decimal no lo redondea. Lo corta. Esto causa errores financieros en la facturación. Solución: Usa round() o number_format().
• Errores de JSON json_decode devuelve un objeto por defecto. Si intentas usarlo como un array, el script falla. Solución: Pasa true como segundo argumento para obtener un array.
• Riesgos de seguridad XSS Imprimir la entrada del usuario directamente permite que los atacantes inyecten scripts. Solución: Usa siempre htmlspecialchars().
• Fallos de rutas Las rutas relativas funcionan en máquinas locales pero fallan en servidores en vivo. Solución: Usa la constante DIR para rutas absolutas.
• Datos duplicados Los usuarios suelen hacer doble clic en los botones de envío. Esto crea entradas duplicadas en la base de datos. Solución: Comprueba primero si el registro existe y usa una restricción UNIQUE en tu base de datos.
• Fusión de arrays array_merge() reinicia las claves numéricas a cero. Esto destruye tu estructura de datos. Solución: Usa el operador + o array_replace() para mantener tus claves.
• Errores invisibles Desactivar los errores en producción es bueno para la seguridad. Es malo para la depuración si no los registras. Solución: Establece log_errors a 1 y define una ruta para error_log.
• Referencias en bucles Un bucle foreach modifica una copia de los datos, no el array original. Solución: Usa el símbolo & para crear una referencia, pero siempre usa unset con la variable después del bucle.
La mayoría de estos errores no lanzan excepciones. PHP sigue ejecutándose, pero produce resultados incorrectos. Esto los hace peligrosos.
Escribir código es fácil. Escribir código listo para producción requiere entender cómo fallan las cosas.
Lee la guía completa aquí: https://dev.to/bikkisingh/10-php-bugs-that-break-real-projects-and-how-to-fix-them-part-2-7hm