Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo hacer un formulario de contacto con PHP

Imago voragine.net
[actualizado el ]

El procedimiento es sencillo, y una vez que se tiene un formulario convenientemente diseñado, con los campos bien nombrados con el atributo name, basta pasarle a la orden mail de PHP lo que un usuario introduce en el formulario. Un ejemplo de formulario podría ser el siguiente:

<form action='http://url.pagina.envio' method='post' name='contactForm'>

   <input name='nombre' value='nombre' onblur='if(this.value == "") {this.value ="nombre";}' onfocus='if(this.value == "nombre") {this.value = "";}' />

   <input name='email' value='email' onblur='if(this.value == "") {this.value ="email";}' onfocus='if(this.value == "email") {this.value = "";}' />

   <input name='asunto' value='Asunto' onblur='if(this.value == "") {this.value ="Asunto";}' onfocus='if(this.value == "Asunto") {this.value = "";}' />

   <textarea rows='5' cols='45' name='mensaje' onblur='if(this.value == "") {this.value ="Mensaje";}' onfocus='if(this.value == "Mensaje") {this.value = "";}'>Mensaje</textarea>

   <input type='submit' name='enviar' value='Enviar' />

</form>

A menos que utilicemos AJAX necesitaremos dos páginas, una que contendrá el formulario y otra que recibirá los datos introducidos en él, los enviará a la orden mail y devolverá en pantalla el mensaje adecuado de que el correo ha sido enviado. Para acceder de la primera a la segunda asignaremos como valor la URL de la segunda página al atributo action del formulario. A recordar:

action='http://url.pagina.envio'
name='nombre'
name='email'
name='asunto'
name='mensaje'

En la segunda página recogeremos la información enviada por la primera, y enviaremos el correo con la orden mail de PHP.

Para lo primero utilizaremos el sistema de envío de datos entre páginas de PHP, POST. Supongamos que tenemos que recoger los valores de los campos nombre, mail, asunto y mensaje, que hemos nombrado convenientemente mediante el atributo name en la página del formulario.

$nombre = $_POST['nombre'];
$mail = $_POST['email'];
$asunto = $_POST['asunto'];
$mensaje = $_POST['mensaje'];

Igualmente creamos las variables que contendrán la dirección del destinatario, las cabeceras del correo e información adicional en el cuerpo del mensaje:

$header = 'From: ' . $mail . " \r\n";
$header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje = "Este mensaje fue enviado por " . $nombre . " \r\n";
$mensaje .= "Su e-mail es: " . $mail . " \r\n";
$mensaje .= "Mensaje: " . $_POST['mensaje'] . " \r\n";
$mensaje .= "Enviado el " . date('d/m/Y', time());

$destino = 'info@tusitio.com';

Por último pasaremos a la orden mail toda la información que necesita para enviar el mensaje:

mail($destino, $asunto, utf8_decode($mensaje), $header);

Para más información puedes consultar un tutorial más extenso en tallerwebmaster.

5 comentarios

    • Por bibiana

    muy interesante

    • Por alex •

    no se sabe que es eso

  1. ¿Qué es lo que no entiendes, alex?

    • Por PABLO FERNANDEZ •

    Hola mi consulta es que los comentarios en mi formulario no llegan a mi mail. Me podrias ayudar. te dejo PHP

    1. Hola Pablo, no es posible incluir código PHP en los comentarios. Puedes usar algún servicio para compartir tu código, como codepad.

Dejar un comentario

*
*

 

No hay trackbacks