Selecciona el Idioma

viernes, 11 de julio de 2014

Crear PHP para envío de respuestas a un formulario y redireccionamiento a página web

Bueno aquí os dejo el código php de lo que yo he creado funciona correctamente, pero la función mail, no devuelve el resultado. Es decir hay un conflicto que no permite recibir los mensajes en el mail definido. No sé por que puede pasar eso. Estoy estudiando la posibilidad de intentar hacerlo con phpmailer pero como aún no sé muy como va, de moment os tendréis que conformar con esto.
Si alguien encuentra la solución, agradecería que la compartiera con el resto del MUNDO!!! por que llevo ya un día sin parar de intentar buscar una solución definitiva.
Antes que nada en vuestro html debéis modificar la linea del formulario : <#form id="form3" METHOD="POST" ACTION="archivo.php"#> (sin almohadillas)usando el método post para el envío y llamando al archivo.php que crearéis a continuación.

Aquí el código PHP

//quitar la almohadilla entre <#?php


<#?php
//aqui nomail es el name del campo del formulario perteneciente al mail que introduce el cliente por el formulario 
if(isset($_POST['nommail'])) {
 
     
 
    // editar estas lineas con vuestros datos 
 
    $email_to = "desy_molinero@hotmail.com";
 
    $email_subject = "Formulario consulta de la web Aura Ruiz Jimenez";
 
     
 
     
 
    function died($error) {
 
        // your error code can go here
 
        echo "Hay un error ";
 
        echo "These errors appear below.

";
 
        echo $error."

";
 
        echo "Porfavor vuelve a rellenar los campos correctamente.

";
 
        die();
 
    }
 
     
 
    // validación de errores y lo mismo con los campos existentes del name de vuestro formulario
 
    if(!isset($_POST['nomnom']) ||
 
        !isset($_POST['apellidos']) ||
  
  
  !isset($_POST['telf']) ||
  
  
  !isset($_POST['nommail']))
 
 {
 
        died('We are sorry, but there appears to be a problem with the form you submitted.');       
 
    }
 
     //creación de las variables con los campos name del formulario
 
    $nombre = $_POST['nomnom']; // required
 
    $apellidos = $_POST['apellidos']; // required
 
    $email_from = $_POST['nommail']; // required
 
    $telefono = $_POST['telf']; // not required
 

 
     //mensajes de errores
 
    $error_message = "";
 
    $email_exp = '/^[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/';
 
  if(!preg_match($email_exp,$email_from)) {
 
    $error_message .= 'El email que has escrito tiene un formato incorrecto, vuelve atras e intentalo de nuevo.
';
 
  }
 
    $string_exp = "/^[A-Za-z .'-]+$/";
 
  if(!preg_match($string_exp,$nombre)) {
 
    $error_message .= 'El nombre que has escrito tiene un formato incorrecto, vuelve atras e intentalo de nuevo.
';
 
  }
 
  if(!preg_match($string_exp,$apellidos)) {
 
    $error_message .= 'The Last Name you entered does not appear to be valid.
';
 
  }
 
  
 
  if(strlen($error_message) > 0) {
 
    died($error_message);
 
  }
 
    $email_message = "Form details below.\n\n";
 
     
 
    function clean_string($string) {
 
      $bad = array("content-type","bcc:","to:","cc:","href");
 
      return str_replace($bad,"",$string);
 
    }
 
     //contenido del mensaje
 
    $email_message .= "Nombre: ".clean_string($nombre)."\n";
 
    $email_message .= "Apellidos: ".clean_string($apellidos)."\n";
 
    $email_message .= "Email: ".clean_string($email_from)."\n";
 
    $email_message .= "Telefono: ".clean_string($telefono)."\n";
 

 
     
 
     
 
// create email headers
 
$headers = 'From: '.$email_from."\r\n".
 
'Reply-To: '.$email_from."\r\n" .
 
'X-Mailer: PHP/' . phpversion();
 
mail($email_to, $email_subject, $email_message, $headers);  

//si esta bien devuelve este mensaje echo y redirige a la web escrita

echo "Genial!!! ";
echo ""; 
 }

?>

Una vez creado , y modificado el html, solo te queda mirar que todo esta correcto pasandole el validador web y subirlo a un servidor externo gratuito o de pago.
Si no te gusta esa versión de php aquí dejo otra que también funciona, pero eso si con el mismo problema de la función mail(). Que parece que funciona, pero no regresa email con los datos.

 <#?php
 if(!empty($_POST['nomnom']) AND !empty($_POST['nommail']) AND !empty($_POST['telf'])){
 
$to ="smx1.molinero.izquierdo.09@gmail.com";
$headers = "Content-Type: text/html; charset=iso-8859-1\n";
$headers .= "From:".$_POST['nomnom']."\r\n";            
$tema="Contacto desde el Sitio Web";
$mensaje="
Nombre: $_POST[nomnom]
E-mail: $_POST[nommail]
Apellidos $_POST[apellidos]
Telefono: $_POST[telf]
"; @mail($to,$tema,$mensaje,$headers); echo "Genial!!! se ha enviado tu mensaje"; echo ""; } else { echo "No se puede enviar el formulario, verifica los campos"; } ?>


Recuerda no dejar espacios entre la primera y la última línea en un archivo, sino probablemente te de un error de línea.


LO DICHO, SI ENCUENTRAS SOLUCIÓN PARA EL ENVÍO DE MAIL DESDE UN FORMULARIO, POR FAVOR DÍMELO!!!!!!!!
Creo que la solución se encuentra en modificar el archivo php.ini alojado en nuestro servidor web, pero ocmo de momento solo uso uno gratuito eso no es posible.






Espero que os sirva de ayuda,

para más info suscribete a Desy Repara

No hay comentarios:

Publicar un comentario