Foros del Web » Programando para Internet » PHP »

Ayuda con formulario

Estas en el tema de Ayuda con formulario en el foro de PHP en Foros del Web. Hola gente! Pido ayuda para resolver un problema que tengo con un formulario que se envia por medio de PHP. Le he dado vueltas y ...
  #1 (permalink)  
Antiguo 14/07/2010, 09:43
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Ayuda con formulario

Hola gente!

Pido ayuda para resolver un problema que tengo con un formulario que se envia por medio de PHP. Le he dado vueltas y no hay caso que funcione, no se mas que hacer.

En teoria deberia funcionar. Incluso cuando lo pruebo en la web, envia el mensaje:"El formulario se envio exitosamente". Pero no llega nada al e-mail.

Si alguien me puede dar una mano le agradezco.

Código HTML:
Ver original
  1. <?php if (array_key_exists ('enviar', $_POST)) {
  2.    
  3.     //scrip para procesar el e-mail
  4.     $para='[email protected]';
  5.     //Lista de archivos que se esperan
  6.     $esperado = array('emisor', 'assunto', 'email_usuario', 'mensaje', 'telefone');
  7.     //Configurar archivos obligatorios
  8.     $obligatorio = array('emisor', 'assunto', 'email_usuario', 'mensaje');
  9.     //Crear un array vacio para cualquier archivo perdido
  10.     $perdido = array();
  11.    
  12.     //Procesar las variables $_POST
  13.     foreach ($_POST as $key => $value) {
  14.     //asignar a variable temporalmente y vacía espacio blanco si no un
  15.     $temp = is_array($value) ? $value : trim($value);
  16.     //si vacío y obligatorio, añadir a array $perdido
  17.     if (empty($temp) && in_array($key, $obligatorio)) {
  18.         array_push($perdido, $key);
  19.     }
  20.     //En otro caso, asignar a una variable del mismo nombre
  21.     elseif (in_array($key, $esperado)) {
  22.         ${$key} = $temp;
  23.     }
  24.     }
  25.    
  26.     //Seguir sólo si todos los campos requeridos están ok
  27.     if (empty($perdido)) {
  28.  
  29.     //Estoy recibiendo el formulario, compongo el cuerpo
  30.     $cuerpo = "<h1>Mensagem enviada desde o site</h1>";
  31.     $cuerpo .= "Nombre: $emisor\n\n";
  32.     $cuerpo .= "E-mail: $email_usuario\n\n";
  33.     $cuerpo .= "Telefone: $telefone\n\n";
  34.     $cuerpo .= "Comentario: $mensaje";
  35.    
  36.     //Limitar tamaño de línea a 70 caracteres
  37.     $cuerpo = wordwrap($cuerpo, 70);
  38.    
  39.     //Enviar el correo...
  40.     $enviarMail = mail($para,$assunto,$cuerpo,"MIME-Version: 1.0\nContent-type: text/html; charset=UTF-8\nFrom: ".$emisor." < http://www.weainox.com.br >");
  41.    
  42.     if ($enviarMail) {
  43.         //perdido deja de ser necesario si el email es enviado, asi que lo destruimos
  44.         unset($perdido);
  45.     }
  46.     }
  47.     }
  48. ?>
  49. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  50. <html xmlns="http://www.w3.org/1999/xhtml">
  51. <title>..: Pagina de Formulario :..</title>
  52. <link href="estilos/wea_estilo1.css" rel="stylesheet" type="text/css" />
  53. <?php include('includes/head.inc.php'); ?>
  54. </head>
  55. <body id="contato">
  56. <div id="nada">
  57.   <div id="cuerpo">
  58.     <?php include('includes/encabezado.inc.php'); ?>
  59.    
  60.     <div id="contenido">
  61.     <div id="sombra"></div>
  62.     <div id="sombra_lado"></div>
  63.       <div id="sombra_lado2"></div>
  64.     <div id="linea"></div>
  65.     <div id="desarrollo">
  66. <div id="aviso">
  67.     <?php if ($_POST && isset($perdido) && !empty($perdido)) {
  68. ?>
  69. <div id="fallo_left"></div>
  70. <p class="advertencia"> Por favor, complete los campos obligatorios. </p>
  71. <div id="fallo_right"></div>
  72. <?php
  73. }
  74. elseif ($_POST && !$enviarMail) {
  75. ?>
  76. <div id="fallo_left"></div>
  77.   <p class="advertencia">Disculpe, ocurrio un problema cuando se enviaba su mensaje.</p>
  78.   <div id="fallo_right"></div>
  79. <?php
  80.  }
  81. elseif ($_POST && $enviarMail) {
  82. ?>
  83. <div id="enviado_left"></div>
  84. <p class="email_ok">Su mensaje fue enviada exitosamente. Gracias por sus comentarios.</p>
  85. <div id="enviado_right"></div>
  86. <?php }?>
  87. </div>  
  88. <h5>FORMULARIO PARA CONTACTO</h5>
  89.     <hr width=100% align="left">
  90.          <form id="form1" name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  91. <div id="qdf">
  92.   <label class="negrita">Asunto: *</label>
  93.   <input name="assunto" type="text" class="margen_abajo" id="assunto" size="35" />
  94. </div>
  95. <p></p>
  96. <div id="qdf">
  97.   <label class="negrita">Nombre: *</label>
  98.   <input name="emisor" type="text" class="margen_abajo" id="emisor" size="35" />
  99. </div>
  100. <p></p>
  101. <div id="qdf">
  102.   <label class="negrita">Telefono:</label>
  103.   <input name="telefone" type="text" class="margen_abajo" id="telefone" size="35" />
  104. </div>
  105. <p></p>
  106. <div id="qdf">
  107.   <label class="negrita">E-mail: *</label>
  108.   <input name="email" type="text" id="email" size="35" />
  109. </div>
  110. <p></p>
  111. <div id="qdf">
  112.   <label class="negrita">Mensaje: *</label>
  113.   <textarea name="mensaje" id="mensaje" cols="27" rows="5" ></textarea>
  114. </div>
  115. <p></p>
  116.         <div id="botones">
  117.           <label>
  118.             <input type="submit" name="enviar" id="enviar" value="Enviar" />
  119.           </label>
  120.           <label>
  121.             <input type="submit" name="apagar" id="apagar" value="Reset" />
  122.           </label>
  123.         * Campos obligatorios</div>
  124.          </form>
  125.  </div>
  126.    
  127.    
  128.  
  129. <div class="freno"></div>
  130.     <div id="degrade"></div>
  131.     </div>
  132.  
  133.     <hr width=100% align="left">
  134.     </div>
  135.   </div>
  136.   </div>
  137. </div>
  138. </body>
  139. </html>

Tal vez el error sea algo simple, pero yo no lo veo.
Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 14/07/2010, 10:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Ayuda con formulario

error, no hay... pues tu código es correcto

te recuerdo que PHP no es un servidor SMTP, y lo que hace PHP con mail() es solo hacer la transferencia del correo hacía el servidor correspondiente...

si tu servidor no tiene algún SMTP es natural que no envíe nada, o bien, si lees el manual... notarías que mail() devuelve un valor, el cual puedes usar para averiguar si la transferencia del correo fue echa correctamente!!

http://php.net/mail
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 14/07/2010, 15:17
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Ayuda con formulario

Gracias Pateketrueke!

Y si no es mucha molestia te pido una ayudita mas.....

La verdad que nunca tuve este problema asi que no ser bien lo que hacer.....ademas en este trabajo el cliente me paso los datos de conexion del Hosting pero no tiene ni idea cual es la empresa que se lo provee, pude accesar al panel de control pero ahi no dice nada de servidor smtp.

En fin 2 preguntas nada mas:

¿Cómo hago para saber si tengo en el hosting un servidor smtp?

¿Y en el caso de no tenerlo que otra alternativa tengo para enviar el formulario del site?

Desde ya gracias.
  #4 (permalink)  
Antiguo 14/07/2010, 15:30
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 meses
Puntos: 269
Respuesta: Ayuda con formulario

Mirate la clase phpmailer, muy fácil de usar.

saludos
  #5 (permalink)  
Antiguo 14/07/2010, 17:10
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Ayuda con formulario

Gracias Cristian_cena, voy a probar con eso a ver si puedo solucionar este problema.

Gracias a todos.
  #6 (permalink)  
Antiguo 14/07/2010, 17:51
 
Fecha de Ingreso: junio-2007
Ubicación: Buenos Aires, Argentina
Mensajes: 262
Antigüedad: 16 años, 10 meses
Puntos: 1
Respuesta: Ayuda con formulario

Casi todos los servidores tienen un servidor SMTP configurado, pero no todos tienen habilitada la función mail. Lo que yo haría es verificar que efectivamente se haya enviado el mensaje:

Código PHP:
//Enviar el correo...
    
$enviarMail mail($para,$assunto,$cuerpo,"MIME-Version: 1.0\nContent-type: text/html; charset=UTF-8\nFrom: ".$emisor." < http://www.weainox.com.br >");
    if (
$enviarMail) {
       echo 
'Se envió';
        
//perdido deja de ser necesario si el email es enviado, asi que lo destruimos
        
unset($perdido);
    } else {
        echo 
'No se envió';
    }

__________________
Moebius Digital | La pieza que faltaba
Diseño web | Web hosting
  #7 (permalink)  
Antiguo 14/07/2010, 20:10
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Ayuda con formulario

Efectivamente MoebiusDigital.....

Hice la prueba y da el mensaje "se envio" pero no llega nada en el correo, parece que el servidor no tiene configurado un servidor smtp....

Mañana con mas paciencia intentare hacerlo con el phpmailer.

Gracias por el aguante!
  #8 (permalink)  
Antiguo 15/07/2010, 10:18
Avatar de Garot  
Fecha de Ingreso: marzo-2010
Ubicación: Mar de Dirac
Mensajes: 121
Antigüedad: 14 años, 1 mes
Puntos: 7
Respuesta: Ayuda con formulario

Cristian_Cena hice la prueba con la classe phpmailer

A ver si alguien puede ayudarme, otra vez en teoria funciona y da el aviso de que ha enviado el mensaje exitosamente, pero no llega nada al correo.

No se si tengo que habilitar alguna funcion en el servidor para que funcione?

A continuacion dejo el código del formulario y el php que lo envia:

Código HTML:
Ver original
  1. <h5>FORMULARIO PARA CONTACTO</h5>
  2.     <hr width=100% align="left">
  3.          <form name="form1" id="form1" method="post" action="enviaemail.php">
  4. <div id="qdf">
  5.   <label class="negrita">Asunto: *</label>
  6.   <input name="assunto" type="text" class="margen_abajo" id="assunto" size="35" />
  7. </div>
  8. <p></p>
  9. <div id="qdf">
  10.   <label class="negrita">Nombre: *</label>
  11.   <input name="nome" type="text" class="margen_abajo" id="emisor" size="35" />
  12. </div>
  13. <p></p>
  14. <div id="qdf">
  15.   <label class="negrita">E-mail: *</label>
  16.   <input name="email" type="text" id="email" size="35" />
  17. </div>
  18. <p></p>
  19. <div id="qdf">
  20.   <label class="negrita">Mensaje: *</label>
  21.   <textarea name="msg" id="mensaje" cols="27" rows="5" ></textarea>
  22. </div>
  23. <p></p>
  24.         <div id="botones">
  25.           <label>
  26.             <input type="submit" name="enviar" id="enviar" value="Enviar" />
  27.           </label>
  28.           <label>
  29.             <input type="submit" name="apagar" id="apagar" value="Reset" />
  30.           </label>
  31.         * Campos obligatorios</div>
  32.          </form>

y este es el archivo enviamail.php
Código PHP:
<?php 
// llamando la classe phpmailer

require_once('class.phpmailer.php');


// rescatando los datos del form

   
$nomeusuario $_POST['nome'];

   
$emailusuario $_POST['email'];

   
$assunto $_POST['assunto'];

   
$mensagem $_POST['msg'];


// hago la llamada de la classe

  
$Email = new PHPMailer();




  
$Email->IsMail();

// activa el envio de e-mails en HTML, se false, desactiva.

  
$Email->IsHTML(true);

// email del remitente del mensaje

  
$Email->From $emailusuario;

// nombre del remitente del email

  
$Email->FromName $nomeusuario;

// Direccion de destino del email

  
$Email->AddAddress("[email protected]");

// Asunto del email

  
$Email->Subject $assunto;

       

// Texto del mensaje

  
$Email->Body .= "<B>E-mail enviado por usuário<BR></b>";

  
$Email->Body .= "Mensaje del usuario: $msg<BR><BR>";
  

// verifica si esta todo ok , si no, avisa el error.

      
if($Email->Send()){
   echo 
'E-mail enviado exitosamente';   
  }
   else{
       
   echo 
"El mensaje no fue enviado. <p>";

   echo 
"Erro: " $Email->ErrorInfo;

   }
     
  
?>
Si alguien puede darme una idea u orientación le agradezco.

Etiquetas: formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:00.