Ir al contenido principal

Correo Profesional — Formulario de contacto PHP seguro

L
Escrito por Luciana Parente

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.4

  • Extensiones habilitadas: openssl, mbstring, json, curl

  • Permisos 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

  1. Subí la carpeta contacto/ completa dentro de public_html/

  2. Verificá que los permisos sean correctos: 644 para archivos, 755 para carpetas

  3. Confirmá que el servidor tenga PHP 8.0 o 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.


⬇️ Descargar el formulario

El paquete completo está listo para instalar y configurar siguiendo esta guía.

Icono de adjunto
¿Ha quedado contestada tu pregunta?