Unidad 11. Ejercicio paso a paso: Recoger datos y enviar un correo


Objetivo

Vamos a crear una página en PHP que recoja los datos del formulario de contacto.html. La página, recogerá los datos, comprobará que el nombre, la consulta y el email no estén vacíos, y que además, el email repetido sea el mismo. Si todo es correcto, enviaremos un correo a nuestra cuenta con los datos. Si algún campo no pasa la validación, informaremos al usuario, mostraremos un enlace para volver al formulario, y no enviaremos el correo.

Para enviar un correo con PHP empleamos la función mail(), de la siguiente manera:

 mail("email_destino", "asunto", "cuerpo_mensaje");

Nota: Por seguridad, algunos hostings gratuitos, aunque permiten PHP, no permiten enviar mensajes.

Ejercicio

Abre el archivo base.html, y guárdalo como enviar_mail.php.

  1. En el título (h2), escribe Contacto.
  2. Cambia el párrafo por las marcas de apertura (<?php) y cierre (?>) del PHP. Todo el código que escribiremos a continuación, irá dentro de esas etiquetas.
  3. Comenzamos por recoger los datos. Declara la función recogeDato, explicada en la teoría:
    function recogeDato($campo) {
      return (isset($_REQUEST[$campo])) ? $_REQUEST[$campo]) : "";
    }
    
  4. Utilizando la función anterior, guardamos cada uno de los datos enviados por el formulario en una variable:
     $email1    = recogeDato('email1');
    $email2 = recogeDato('email2');
    $consulta = recogeDato('consulta');
    $nombre = recogeDato('nombre');
    $conocio = recogeDato('conocio');
    $referente = recogeDato('referente');
  5. Además, utilizaremos la variable $algunerror, a la que le damos un valor inicial Falso. Lo que haremos sera ponerla a verdadero (TRUE) si algún dato no es válido. Al final, si $algunerror es TRUE, es que hay algún dato incorrecto, por lo que no enviaremos el correo.
    Añade la instrucción $algunerror = FALSE;
  6. Ahora que los datos están en variables, vamos a comprobarlos. El nombre es un campo obligatorio. Comprobamos si el valor es igual al que le asigna la función recogeDato si no está defindo ($nombre==""). Si es verdadero, ponemos $algunerror a verdadero ($algunerror = TRUE;) y mostramos el mensaje de error. Si no es cierto, continuamos.
    Añade el bloque If:
     if($nombre==""){ 
    $algunerror = TRUE;
    echo "<p class=\"erroneo\">No has introducido tu nombre.</p>\n";
    }
  7. Del mismo modo, comprobamos que $consulta no sea vacía. Añade el siguiente bloque:
     if($consulta==""){ 
    $algunerror = TRUE;
    echo "<p class=\"erroneo\">El área de la consulta no puede quedar en blanco.</p>\n";
    }
  8. También tenemos que comprobar el e-Mail, que aparece en dos variables ($email1 y $email2). Primero comprobamos si está vacío ($email1==""). Si lo está marcamos el error y mostramos el mensaje. Si no, tenemos que comprobar si los dos son distinto ($email1!=$email2). Si se cumple, es decir, si son distintos, marcamos el error y mostramos el mensaje. Si no, continuamos. Añade el siguiente bloque de instrucciones:
    if($email1==''){ 
    $algunerror = TRUE;
    echo "<p class=\"erroneo\">No has introducido tu eMail</p>\n";
    } elseif($email1!=$email2){
    $algunerror = TRUE;
    echo "<p class=\"erroneo\">Los eMails introducidos no coinciden.</p>\n";
    }
  9. Ahora ya hemos comprobado los datos relevantes. Si $algunerror es verdadero, es que algún dato no era correcto. Así que escribimos un mensaje y un enlace para volver al formulario. Si no es verdadero, es que no han habido errores. Podemos componer un mensaje con los datos, y enviarlo a nuestra dirección de correo.
    Escribe el siguiente bloque, cambiando micorreo@mail.com por tu dirección:
      if ($algunerror){ 
    echo "<p>&nbsp;</p>\n";
    echo "<p>No se ha podido enviar el mensaje por los errores que se detallan arriba.</p>\n";
    echo "<p>Por favor, vuelve a rellenar el formulario.</p>\n";
    echo "<p class=\"centrado\"><a href=\"contacto.html\">Volver al formulario</a></p>\n";
    } else {
    $para = "micorreo@mail.com";
    $asunto = "Contacto web Floramics - consulta sobre ".$referente;
    $mensaje = "Datos del formulario de contacto:\n".
    "Nombre: $nombre \n".
    "eMail: ".$email1."\n".
    "Nos conoció por: ".$conocio." \n".
    "Pregunta: ".$consulta;
    mail($para, $asunto, $mensaje);
    echo "<p>Tu mensaje se ha enviado correctamente. Gracias por contactar con nosotros.</p>\n";
    echo "<p>Nos pondremos en contacto lo antes posible.</p>\n";
    }
  10. Guarda la página.
  11. Añade a la hoja de estilo el estilo .erroneo {color: darkred;}.
  12. Prueba la página en el servidor, subiéndola, y subiendo también el formulario.
    Inicio





    Página inicial  Cursos Informática Gratuitos