Aplica a: Web Hosting y WordPress Hosting · Tiempo estimado: 15 min
Este formulario PHP standalone está diseñado para integrarse fácilmente en cualquier sitio web sin necesidad de base de datos. Incluye envío por SMTP autenticado, validación completa de campos, protección antispam por múltiples capas y manejo seguro de archivos adjuntos.
Requisitos
PHP
8.0 a 8.4Extensiones habilitadas:
openssl,mbstring,json,curlPermisos de archivos: 644 · Permisos de carpetas: 755
Estructura de archivos
/public_html/contacto/
├── assets/
│ ├── css/
│ ├── js/
│ └── icons/
├── config/
│ ├── .htaccess
│ ├── config_app.php
│ └── config_design.php
├── vendor/
├── index.php
├── procesar.php
└── .htaccess
La carpeta config/ contiene parámetros sensibles. No eliminés ni modifiques el archivo .htaccess incluido.
Instalación
Subí la carpeta
contacto/completa dentro depublic_html/Verificá que los permisos sean correctos: 644 para archivos, 755 para carpetas
Confirmá que el servidor tenga PHP
8.0o superior con las extensiones requeridas
Integración en el sitio
Acceso directo
Mediante iframe
<iframe src="/contacto/index.php" width="100%" height="750" frameborder="0"></iframe>
Configuración
Toda la configuración se hace desde /public_html/contacto/config/.
config_app.php — lógica y comportamiento
SMTP: configurá el servidor, usuario, contraseña, puerto, cifrado, remitente y destinatario.
Campos del formulario: activá o desactivá los campos disponibles (nombre, apellido, email, teléfono, dirección, mensaje y adjuntos) y definí cuáles son obligatorios.
Seguridad: configurá los tipos de archivos permitidos en adjuntos, el tamaño máximo, el tiempo mínimo de envío (TimeTrap) y el campo honeypot. El reCAPTCHA de Google (v2) está disponible pero desactivado por defecto — si lo activás, la validación se hace del lado del servidor.
config_design.php — apariencia
Modificá colores, textos visibles y el estilo del botón de envío sin tocar código PHP.
Cómo funciona el formulario
El proceso tiene tres etapas bien separadas:
index.php carga la configuración, genera las medidas de seguridad y muestra el formulario al visitante.
form.js valida los datos en el navegador, envía el formulario por AJAX y muestra los mensajes de error o éxito sin recargar la página.
procesar.php ejecuta las validaciones de seguridad del lado del servidor, sanitiza los datos, procesa los adjuntos, envía el correo y devuelve una respuesta en JSON.
Seguridad implementada
WAF interno contra XSS, SQLi y otros ataques comunes
Protección CSRF
Honeypot anti-bots
TimeTrap (bloquea envíos demasiado rápidos)
Validación estricta de tipos de datos
Adjuntos con validación MIME real
Problemas frecuentes
Error de autenticación SMTP
→ Verificá que las credenciales sean correctas y que el puerto y método de cifrado coincidan con los datos de tu cuenta de correo en Donweb.
Error de reCAPTCHA
→ Verificá que la casilla esté marcada, que las claves sean válidas y que el dominio esté autorizado en la configuración de reCAPTCHA de Google.
Token inválido
→ Verificá que las sesiones PHP estén habilitadas en tu hosting y que no haya problemas de permisos en /tmp.
Archivo no permitido
→ El tipo de archivo que intentás adjuntar no está incluido en la lista de tipos permitidos en config_app.php. Agregalo si corresponde.
Ver también
⬇️ Descargar el formulario
El paquete completo está listo para instalar y configurar siguiendo esta guía.
