Pintelog
El reto principal
Publicar una foto sin recargar la página parece trivial hasta que lo haces sin framework: hay que subir el archivo por AJAX, validarlo en el servidor (tipo real, no extensión), guardarlo fuera de la raíz web, escribir el registro en base de datos y devolver el HTML del post ya renderizado para insertarlo en el muro. Cada uno de esos pasos puede fallar por separado y el frontend tiene que enterarse de cuál falló.
El registro exige confirmar el correo antes de activar la cuenta, y los correos de verificación caían todos en spam. Enviarlos con mail() desde el VPS no bastaba: hubo que montar PHPMailer sobre SMTP autenticado y configurar los registros SPF y DKIM del dominio. Hasta que el DNS no estuvo bien, ningún usuario podía completar el registro.
Qué aprendí
Escribir la capa de infraestructura a mano una vez cambia cómo lees la documentación de cualquier framework después. Saber por qué existe un middleware de sesión, o qué protege un token CSRF, es distinto cuando ya te ha mordido no tenerlo.
- Validar los archivos subidos por su tipo real (
finfo), nunca por la extensión del nombre - Guardar los archivos de usuario fuera de la raíz web y servirlos por un script controlado
- Un servidor de correo propio es 20% código y 80% registros DNS bien puestos
- PHP
- POO
- AJAX
- MySQL
- PHPMailer
- VPS