LiMiTreK

Versión Completa: Formulario de contacto por email PHP + HTML
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto
He terminado un completo formulario de contacto compuesto por dos partes, la parte en HTML que contiene los campos donde insertais los valores, y el script PHP, que contiene el código que envía el mail.

Descargas

RECOMENDADA - Versión actual (1.2.1):
[attachment=75]

DEPRECATED - Versiones antiguas:
[attachment=59]
[attachment=60]

ACTUALIZAR - Instrucciones:
Primero, debes volver a configurar el nuevo mail.php. Se hace igual que el que tuvieras de antes, pero presta atención por si hay alguna opción más. Cuando lo tengas configurado, súbelo y reemplaza a la versión antigua.

1. Contenido y características

Contenido:

* contacto.html - archivo con el código HTML que deberás pegar en la página que contendrá el formulario de envío.
* mail.php - archivo php que debes subir a un servidor con soporte php. Configuración dentro.

Características:

* Permite a tus usuarios enviar mensajes al administrador del sitio web.
* Compatible con varias webs al mismo tiempo. Con un único archivo .php puedes tener formularios de contacto en todos tus sitios web.
* Prevención de errores. No envía el mensaje si el remitente (email) es incorrecto, si el mensaje es demasiado corto o demasiado largo (configurable) o si no hay asunto.
* Registro de envíos. Indica en un archivo de texto todos los emails que se han enviado. Registra IP, emails remitente, destinatario y fecha y hora del envío.
* Corrección de caracteres especiales, por si tu cliente de correo te da problemas con las tildes y comillas, el script sustituye estos caracteres (configurable).
* Bonita y simple interfaz de usuario.

Cita:
[Imagen: formulario-contacto-php-1.png]

[Imagen: formulario-contacto-php-2.png]

[Imagen: formulario-contacto-php-3.png]

2. Instalación

Para configurar este formulario debes hacer lo siguiente:

[1]. Sube mail.php: debes colocar mail.php en un servidor con soporte php. Si ya lo tienes subido, pasa al siguiente paso.

[2]. Inserta el código HTML en la página web: abre contacto.html y recoge el código HTML que contiene. Pégalo en la página de tu web donde quieres colocar el formulario de contacto.

[3]. Configura estos dos archivos: más datos en el siguiente apartado.

3. Configuración

Configura mail.php

El primer paso es configurar tu script php. Para ello hay designadas unas variables en el código php que voy a explicar ahora.

$especial_chars: esta variable puede tener los valores de 1 ó 0. Con 1, el script sustituirá automáticamente los caracteres con tilde que escriba el usuario, y los pondrá sin tilde, de este modo "á" -> "a". 1 = cambiar caracteres, 0 = dejarlos como están. Úsalo si tu cliente de Email da problemas, o no lee las tildes.

$autor: como en el caso anterior, los valores posibles con 1 ó 0. Con 1, pondrás un enlace al autor con url = limitrek.com y texto = :.: en una esquinita del script. Con 0, ese enlace sencillamente no aparecerá.

$mail_min_chars: caracteres mínimos para enviar el email. Lo recomendable es que esté alrededor de 20, quizá un poco más.

$mail_max_chars: caracteres máximos para el mail. Si es muy grande puedes tener problemas con el servidor, pero si es muy pequeño no podrán enviarte notas de prensa, o artículos... etc. Recomiendo dejarlo en torno a 3 mil ó 5 mil.

$log_security: en esta variable tienes que escribir una cadena de texto y números (no pongas puntos, interrogantes o cualquier otro símbolo, sólo números y letras). Debe ser una cadena aleatoria, por ejemplo aj69dh3ndl, de entre 6 y 10 dígitos.

$url_mailphp: la dirección url exacta donde se encuentra el fichero mail.php, por ejemplo en el caso de LMT es http://limitrek.com/mail.php

$mostrar_html: valores posibles para esta variable son 1 ó 0. Con 1 estás permitiendo que el script te de él solo el código HTML para el formulario HTML. Para ello, configura el script como se te ha indicado hasta ahora, pon un 1 en esta variable y accede al mail.php, escribiendo esta dirección: mail.php?show=html . El script devuelve error, pero te suelta el código HTML ya formateado, con los caracteres máximos ya puestos. Copia y pega. De no hacer esto, tendrías que sustituir los caracteres máximos y la URL del formulario manualmente. Cuando hayas copiado el código HTML, edita el archivo php y ponle un 0 en esta variable.

$mostrar_log: 1 ó 0, como antes. Con 1, permites al script mostrar el log. Con 0, no. Necesitas el código que introdujiste antes ($log_security), será algo así como la contraseña para leer el registro de envío de emails.

Configura el código HTML

Si utilizaste la utilidad de configuración del código HTML que ofrece mail.php, te ahorrarás un poco de trabajo aquí. Vamos a ver qué hay que configurar en el código HTML:

<form action="url_archivo_mail.php" method="post">: sustituye el texto por la URL exacta del mail.php una vez lo hayas subido al servidor. Es OBLIGATORIO hacerlo. mail.php ya lo hace automáticamente si sigues los pasos de arriba.

<option value="asunto_1">Asunto 1</option>: en este caso puedes copiar y pegar tantas veces como desees esta parte del código. Sustituye, y no hay más. Dentro de value="asunto_1", asunto_1 es lo que leerás en el asunto del email que recibirás. Lo que el usuario ve es Asunto 1. Un ejemplo de esto sería <option value="afiliacion">Afiliación</option>.

style="ESTILO": en este apartado, que está 3 veces en todo el código, puedes indicar las dimensiones de los cuadros de texto. Por ejemplo, en los dos primeros puedes sustituir ESTILO por width:200px; para hacer que las cajas de mail y asunto midan 200 píxeles de ancho, y en el tercero (la caja de texto) puedes poner width:200px;height:100px; para que mida 200 de ancho por 100 de alto.

5000: aparece 4 veces en el código, y es la cantidad máxima de caracteres del mail. Si no lo configuras bien, al escribir en la caja de texto los caracteres restantes no irán bajando de modo gradual y dará errores. mail.php ya configura esto si seguiste la guía paso a paso.

Y ya está, una vez hecho esto todo debería funcionar bien. Sólo queda configurar los datos de tus webs, adelante:

4. Introduce los datos de tus webs

El script ha cambiado bastante en este aspecto desde versiones anteriores. Voy a poner ejemplos de cómo se configura. Esto es lo que trae de serie el script:

Código PHP:
$ref_form[0] = "formulario";
$ref_index[0] = "index";
$ref_mail[0] = "email";
$ref_sitio[0] = "nombre"

Rellenar eso es muy sencillo.

$ref_form[0] es la url exacta de la página web que contiene el formulario, por ejemplo http://sitio.com/contacta.html
$ref_index[0] es el índice de tu sitio, por ejemplo http://sitio.com
$ref_mail[0] el email al que recibirás los mensajes que se envíen.
$ref_sitio[0] es el nombre del sitio tal y como aparecerá en el asunto del email.

Y para configurar más sitios, MUY fácil, sólo hay que hacer esto y rellenar:

Código PHP:
$ref_form[0] = "formulario";
$ref_index[0] = "index";
$ref_mail[0] = "email";
$ref_sitio[0] = "nombre";

$ref_form[1] = "formulario";
$ref_index[1] = "index";
$ref_mail[1] = "email";
$ref_sitio[1] = "nombre";

$ref_form[2] = "formulario";
$ref_index[2] = "index";
$ref_mail[2] = "email";
$ref_sitio[2] = "nombre"

Es decir, pon varias veces ese código, tantas como sitios web tengas, y date cuenta de lo siguiente:

* Cada bloque de cuatro lleva un número único, empezando desde el 0 y sumando 1.
* Cada bloque con el mismo número incluye los datos del MISMO SITIO WEB.

Esto es importantísimo. Si cumples eso el script funcionará, tengas 1 ó 500 sitios web. Y bueno, ya está. Mucho más fácil que en la versión anterior, ¿no?

Consulta el registro de envíos

Para que puedas verlo la variable &mostrar_log debe tener un 1 como valor, y debes conocer el código que introdujiste al principio, en $log_security. Accede a mail.php?show=log&security=CODIGO para que el script muestre el log completo. Ejemplo de URL:

mail.php?show=log&security=aj69dh3ndl

5. Créditos

* Enlace al autor opcional. En el script mail.php se incluye la opción de activarlo o no.
* Se requiere atribución. La atribución está incluída en el código (tanto HTML como PHP), y es obligatorio mantener ese código. El enlace al autor como dice el punto anterior es opcional.
* No se permite el uso comercial. Si teneis publi en las webs no pasa nada, pero no useis este script para ganar dinero con él.
* Puedes hacer modificaciones y utilizarlas, pero no doy soporte a éstos mods.

6. Soporte y bugs

Soporte: en este thread. Postea aquí tus dudas, sugerencias, peticiones de nuevas características... etc. Si tienes algo que decir este es el lugar.

Reporte de bugs: si no estás registrado puedes enviar un mail a limitrek arroba gmail punto com en el que describas exhaustivamente qué problema tiene el formulario, qué es lo que hace mal. Si estás registrado, por favor coméntalo en este tema.

7. Versiones

1.3 (Futura versión) Cambios previstos:
- Bloqueo del script si se envían mails duplicados.
- Bloqueo del script para prevenir un uso masivo.


1.2.1 (B)
- Corregidos varios problemas de gravedad media y baja, y problemas internos.
- Solucionado el bug de que se muestra el registro de envíos sí o sí, independientemente de si se fijaba el código o no.


1.2 (A+B+O)
- Inclusión en el mail de la IP que genera el mensaje.
- Log de envío de emails con IPs, remitentes y hora de envío.


1.1 (A+B)
- Corregido el bug de los caracteres mínimos.
- Configurar varios sitios web ahora es más fácil.
- El script devuelve el código HTML ya formateado al acceder a mail.php?show=html


1.0 (Primera release)

Leyenda:
A - avance, indica que se han añadido características.
B - bugfix, indica que se han corregido bugs
O - optimización, indica que se han mejorado características o se ha mejorado el código


8. Hosting gratis de tu formulario de contacto

Dos personas de LiMiTreK podrán tener un formulario de contacto hospedado aquí en el servidor de LMT. Ellos incluyen el HTML en su página web, y el mail.php será el que está hospedado aquí en LMT. Una persona en Masters de Ie.st podrá solicitarlo también. El motivo es para hacerle bien al mundo, probar el script y detectar bugs y acuñar sugerencias.
Actualizado a la versión 1.1. Muy mejorado y ahora es bastante más fácil de usar, espero que le sirva a la gente. Dejo la versión anterior de momento a modo de documentación.
hola el formulario me aprece excelente y es muy facil de entender segui los paso mas basicos para poder probar el formulario peor al enviarlo me dice q el scrip esta blokeado a q se debe este resultado de error? que puedo hacer para arreglarlo?
Seguramente hayas configurado mal los datos de las webs. El script, salvo que se trate de un bug de programación, no se bloquea salvo que envíes el email desde un sitio no permitido.

El script admite todos los sitios que estén listados correctamente según lo dicho en el paso 4. Para saber si un sitio está permitido, tienes que saber la dirección EXACTA donde está la página donde insertaste el código HTML, por ejemplo http://sitio.com/contactar.html

Acto seguido, abre el script con algún editor, y busca que esa dirección esté listada en $reg_form:

Código PHP:
$reg_form[X] = "http://sitio.com/contactar.html"

Donde X es un número cualquiera. Si la dirección aparece, entonces creo que se trata de un bug de programación, o bien que al editar has eliminado alguna comilla o algo, o has indicado mal la dirección del código HTML.

Puedo revisarlo por tí, dime la dirección de mail.php y la dirección de la página donde ubicaste el formulario de contacto HTML.
El formulario ha sido actualizado a la versión 1.2, que incorpora el registro de envío de emails y se indica la IP del envío en el propio mail. Como siempre, bugs y sugerencias comentadlas en este tema por favor.

Me edito para avisar de que he actualizado también a 1.2.1. Las versiones que solucionen problemas sustituirán a sus versiones anteriores, para evitar que se sigan distribuyendo versiones con fallos.
Si quieres le puedo dar publicidad posteandolo en mi web, ya que me parece muy interesante. Dime que pongo.

Un saludo
URLs de Referencia