En
este ejercicio vamos a crear un pequeño formulario, para que los
usuarios puedan enviar sus comentarios y los datos que introduzca el
usuario en el formulario llegarán a través de un correo
electrónico, para ello vamos a usar la función mail de PHP.
Esta función necesita unos parámetros que se pasarán a través de
unas variables. Estos estos parámetro y variables son:
mail($para,
$asunto, $mensaje, $cabecera);
$para:
esta variable indicar a quien le va a llegar el e-mail.
$asunto:
esta variable contendrá el asunto del e-mail y es opcional.
$mensaje:
esta variable contiene el texto del comentario del usuario y que
llegará al correo electrónico.
$cabecera:
esta variable contiene el tipo de cotejamiento, modo de cómo se van
a transferir los datos, MIME (Multipurpose Internet Mail Extensions,
es decir, Extensiones de Correo Internet Multipropósito), que son
una serie de especificaciones dirigidas al intercambio a través de
Internet, es decir, los tipo de archivos (texto, audio, vídeo,
etc.) de forma transparente para el usuario. Además una parte
importante del MIME está dedicada a mejorar las posibilidades de
transferencia de texto en distintos idiomas y alfabetos. Este
parámetro es opcional.
Vamos
a explicar como hemos realizado el ejercicio para que los datos del
usuario lleguen por correo al destinatario.
Lo
primero es crear el formulario, dentro de la página contacto.html,
usando la etiqueta HTML <form></form> con los siguientes
atributos:
name="form1":
Este atributo indica el nombre con el que vamos a identificar el
formulario.
action="v_contacto.php":
Este atributo se usa para indicar al formulario que acción debe
de realizar con los datos de los campos del formulario.
method="post":
Este atributo se usa para indicar al formulario que método se usará
para enviar los datos de los campos del formulario.
enctype="multipart/form-data":
Este atributo se usa para indicar al formulario el tipo de
encriptación que irán los datos que se envían.
Otra
cosa muy importante que debemos que tener en cuenta, en nuestra
página de contacto.html, para que cuando lleguen la información al
correo electrónico de destino sea legible, sobretodo si el usuario
ha introducido acentos, eñes, interrogaciones (¿?), exclamaciones
(¡!) o otros caracteres especiales, es el cotejamiento de nuestra
página HTML, con la etiqueta <meta />, que debe ser:
<meta
http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
Esta
etiqueta se introducirá en la cabecera del documento HTML, entre las
etiquetas <head></head>.
Una
ver realizado el formulario crearemos el documento v_contacto.php,
que es el que realizará la acción de enviar los datos del
formulario a los correo electrónicos que indiquemos en la variable
$para.
Este
documento no tendrá ninguna etiqueta HTML, por lo que quedará de la
siguiente manera:
<?php
/*Aquí
recogemos los valores del los campos del formulario, que se
identifican con el atributo name de cada campo del formulario y se
asigna el valor a una variable de PHP, mediante el método que se
definió en el formulario que en este caso es POST.*/
$nombre=$_POST['nombre'];
$email=$_POST['email'];
$consulta=$_POST['consulta'];
/*En
la cabecera del email: indicaremos una serie de paramentos, como MIME
que explicamos anteriormente para la definición del lenguaje, el
cotejamiento y para quien va el e-mail. */
$cabecera
= "MIME-Version: 1.0" . "\r\n";
$cabecera.=
"Content-type: text/html; charset=iso-8859-1" . "\r\n";
$cabecera.=
"From ".$para."\r\n";
/*Destinatarios
y asunto de email:*/
$para
= “tucorreo@dominio.com, otrocorreo@dominio1.com, etc…”;
$asunto
= “Consulta del formulario de la Web”;
/*En
el cuerpo del mensaje: estarán la variable que contiene el mensaje
que vamos a recibir por e-mail, y se creará a partir de varios
valores que iremos concatenando para así formar el mensaje que vamos
a recibir.*/
$mensaje
= "Este mensaje fue enviado por: ".$nombre."\r\n";
$mensaje
.= "El e-mail es: ".$email."\r\n";
$mensaje
.= "Mensaje: \r\n\n".$consulta."\r\n\n";
/*Este
apartado del mensaje es para indicar al usuario que reciba el mensaje
la fecha en la que se envió la información a través del
formulario, para ello usaremos la función date() y time(), como ves
en el ejercicio:*/
$mensaje
.= "Fecha del envío: ".date('d/m/Y', time());
/*Función
mail de PHP: que es la que enviará el correo electrónico. Si todo
es correcto:*/
if(mail($para,
$asunto, $mensaje, $cabecera)){
/*La
variable $error vale 1 y se enviará este valor con la función
header(“Location:….”); que nos reenviará al documento
contacto.php, con el valor de la variable $error que se
enviará mediante el método GET>.*/
$error=1;
header("Location:contacto.php?error=$error");
}
/*En
caso contrario:*/
else{
/*La
variable $error vale 0 y se enviará este valor con la función
header(“Location:….”); y nos reenviará al documento
contacto.php, con el valor de la variable $error que se
enviará mediante el método GET.*/
$error=0;
header("Location:contacto.php?error=$error");
}
?>
El
documento contacto.php, es igual que el documento contacto.html, pero
no tiene el formulario, y al principio de este documento y fuera de
las etiquetas <HTML> </HTML>, ser recogerá el valor de
la variable $error que se ha pasado por el método GET y
dependiendo del valor que tenga se mostrará un mensaje de error
dentro del documento contacto.php. Ejemplo:
<?php
if
($_GET['error']==1) $error='<div>Se ha enviado correctamente,
gracias por su colaboración.</div>';
else
$error='<div style="color:#FF0000";>No se ha enviado
correctamente, inténtelo de nuevo y perdone las molestias.</div>';
?>
Resumiendo,
como hemos visto los datos del formulario se envía al documento
v_contacto.php, este envía los datos tratados a los correos
electrónicos que se le indiquen , y mediante la función
header("Location:contacto.php?error=$error"); se
abrirá la página contacto.php y mostrará el valor de la variable
$error que se ha enviado a través del método GET, si todo ha
ido correctamente, la variable $error tendrá el valor 1,
mostrará un mensaje y si el valor de la variable $error es 0
mostrará otro mensaje al usuario.
El
proceso que hemos explicado lo mostraremos mediante un gráfico para
intentar resolver las dudas que hubiesen surgido:
Espero
que os sea de ayuda a todos un saludo:
Antonio
Comentarios
Publicar un comentario
Dejanos tu opinión o comentario, entre todos podemos aprender más sobre los temas que se tratan en este Blog. No te olvides seguidme en Twitter, YouTube o Facebook. Muchas gracias por tu tiempo. 👋😎