Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Formulario de contacto

Estas en el tema de Formulario de contacto en el foro de PHP en Foros del Web. Hola, estoy haciendo un formulario de contacto, pero hay algo que me falla en el y no se que es, a ver si alguien me ...
  #1 (permalink)  
Antiguo 18/04/2013, 17:56
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Formulario de contacto

Hola, estoy haciendo un formulario de contacto, pero hay algo que me falla en el y no se que es, a ver si alguien me puede decir que hago mal, aquí dejo el código:
Código PHP:
Ver original
  1. <body id="top">
  2. <?
  3.         if(isset($_POST['boton'])){
  4.             $errors = array();
  5.             if($_POST['Nombre'] == ''){
  6.                 $errors[1] = '<span class="error">Ingresa tu Nombre</span>';
  7.             }else if($_POST['Email'] == '' or !preg_match("/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/",$_POST['email'])){
  8.                 $errors[2] = '<span class="error">Ingresa un email válido</span>';
  9.             }else if($_POST['Asunto'] == ''){
  10.                 $errors[3] = '<span class="error">Ingresa el asunto del mensaje</span>';
  11.             }else if($_POST['Mensaje'] == ''){
  12.                 $errors[4] = '<span class="error">Ingresa el mensaje</span>';
  13.             }else{            
  14.                 $dest = "[email protected]"; //Email de destino
  15.                 $nombre = $_POST['Nombre'];
  16.                 $email = $_POST['Email'];
  17.                 $asunto = $_POST['Asunto']; //Asunto
  18.                 //Cabeceras del correo
  19.                 $header = 'From: ' . $email . " \r\n";
  20.                 $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  21.                 $header .= "Mime-Version: 1.0 \r\n";
  22.                 $header .= "Content-Type: text/plain"; //
  23.                  
  24.                 $mensaje = "Nombre: " . $nombre . "\nAsunto: " . $asunto . " \r\n";
  25.                 $mensaje .= "E-mail: " . $email . " \r\n";
  26.                 $mensaje .= "Mensaje: " . $_POST['Mensaje'] . " \r\n";
  27.                 $mensaje .= "Enviado el " . date("d/m/y \a \l\a\s H:i:s ");
  28.                
  29.                 if(mail($dest,$asunto, utf8_decode($mensaje),$headers)){
  30.                     $result = '<div class="result_ok">Tu mensaje se envio correctamente.</a>';    
  31.                     // si el envio fue exitoso reseteamos lo que el usuario escribio:
  32.                     $_POST['nombre'] = '';
  33.                     $_POST['email'] = '';
  34.                     $_POST['asunto'] = '';
  35.                     $_POST['mensaje'] = '';
  36.                 }else{
  37.                     $result = '<div class="result_fail">Hubo un error al enviar el mensaje :(</a>';
  38.                 }
  39.             }
  40.         }
  41.     ?>
  42. <div id="respond">
  43.          <form id="form1" name="form1" method="post" action="">
  44.           <p>
  45.             <input name="Nombre" type="text" id="Nombre" size="30" value='<?php echo $_POST['Nombre']; ?>'/>
  46.             <label for="Nombre"><small>Nombre (Requerido)</small></label>
  47.           </p>
  48.           <p>
  49.             <input name="Email" type="text" id="Email" size="40" value='<?php echo $_POST['Email']; ?>'/>
  50.             <label for="Email"><small>E-Mail (Requerido)</small></label>
  51.           </p>
  52.           <p>
  53.             <input name="Asunto" type="text" id="Asunto" size="100" value='<?php echo $_POST['Asunto']; ?>'/>
  54.             <label for="Asunto"><small>Asunto (Requerido)</small></label>
  55.           </p>
  56.           <p>
  57.             <textarea name="Mensaje" cols="500px" rows="10" id="Mensaje"><?php echo $_POST['Mensaje']; ?></textarea>
  58.             <label for="Mensaje" style="display:none;"><small>Mensaje  (Requerido)</small></label>
  59.           </p>
  60.           <p>
  61.             <input type='submit' value='Enviar Mensaje' class='boton' name='boton'/>
  62.             &nbsp;
  63.             <input name="Borrar" type="reset" id="Borrar" value="Borrar" /></center>
  64.           </p>
  65.         </form>
  66.        
  67.          </div>
  68.       <? echo $result; ?><?php echo $errors[1]; ?><?php echo $errors[2]; ?><?php echo $errors[3]; ?><?php echo $errors[4]; ?>
  69. </body>

Cuando ingreso email y después doy a enviar tendría que dar error porque falta el asunto e imprimir un mensaje de alerta, pero no lo imprime y lo mismo pasa con el mensaje, en cambio con el nombre y email funciona bien.
Gracias.
  #2 (permalink)  
Antiguo 19/04/2013, 05:19
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Formulario de contacto

La estructure if else if provoca que al entrar en el primer if los else no se ejecutan. Salu2
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 19/04/2013, 05:46
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: Formulario de contacto

¿Como puedo solucionarlo?, ¿ convirtiendo el primer if en un else if?
  #4 (permalink)  
Antiguo 19/04/2013, 06:31
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Formulario de contacto

Te faltaban 3 '}' agregalos tal y como te los puse en este codigo y funciona perfecto..

Código PHP:
Ver original
  1. if(isset($_POST['boton'])){
  2.             $errors = array();
  3.             if($_POST['Nombre'] == ''){
  4.                 $errors[1] = '<span class="error">Ingresa tu Nombre</span>';
  5.             }else{
  6.              if($_POST['email'] == '' or !preg_match("/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/",$_POST['email'])){
  7.                 $errors[2] = '<span class="error">Ingresa un email válido</span>';
  8.             }else{ if($_POST['Asunto'] == ''){
  9.                 $errors[3] = '<span class="error">Ingresa el asunto del mensaje</span>';
  10.             }else{ if($_POST['Mensaje'] == ''){
  11.                 $errors[4] = '<span class="error">Ingresa el mensaje</span>';
  12.             }else{            
  13.                 $dest = "[email protected]"; //Email de destino
  14.                 $nombre = $_POST['Nombre'];
  15.                 $email = $_POST['Email'];
  16.                 $asunto = $_POST['Asunto']; //Asunto
  17.                 //Cabeceras del correo
  18.                 $header = 'From: ' . $email . " \r\n";
  19.                 $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  20.                 $header .= "Mime-Version: 1.0 \r\n";
  21.                 $header .= "Content-Type: text/plain"; //
  22.                  
  23.                 $mensaje = "Nombre: " . $nombre . "\nAsunto: " . $asunto . " \r\n";
  24.                 $mensaje .= "E-mail: " . $email . " \r\n";
  25.                 $mensaje .= "Mensaje: " . $_POST['Mensaje'] . " \r\n";
  26.                 $mensaje .= "Enviado el " . date("d/m/y \a \l\a\s H:i:s ");
  27.                
  28.                 if(mail($dest,$asunto, utf8_decode($mensaje),$headers)){
  29.                     $result = '<div class="result_ok">Tu mensaje se envio correctamente.</a>';    
  30.                     // si el envio fue exitoso reseteamos lo que el usuario escribio:
  31.                     $_POST['nombre'] = '';
  32.                     $_POST['email'] = '';
  33.                     $_POST['asunto'] = '';
  34.                     $_POST['mensaje'] = '';
  35.                 }else{
  36.                     $result = '<div class="result_fail">Hubo un error al enviar el mensaje :(</a>';
  37.                 }
  38.             }
  39.         }
  40.             }
  41. }
  42. }
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #5 (permalink)  
Antiguo 19/04/2013, 06:52
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: Formulario de contacto

Nada no va, lo he puesto como has dicho, y modifique también una palabra que me di cuenta que estaba mal, pero no pasa de comprobar el email.
  #6 (permalink)  
Antiguo 19/04/2013, 06:53
 
Fecha de Ingreso: agosto-2011
Ubicación: Santo Domingo
Mensajes: 487
Antigüedad: 12 años, 8 meses
Puntos: 31
Respuesta: Formulario de contacto

Bueno verifica que estas haciendo mal, tengo el codigo tal y como lo tienes y funciona a la perfeccion..

aqui pongo tu codigo completo prueba

Código HTML:
Ver original
  1. <body id="top">
  2. <?
  3.        if(isset($_POST['boton'])){
  4.            $errors = array();
  5.            if($_POST['Nombre'] == ''){
  6.                $errors[1] = '<span class="error">Ingresa tu Nombre</span>';
  7.             }else{
  8.              if($_POST['email'] == '' or !preg_match("/^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/",$_POST['email'])){
  9.                 $errors[2] = '<span class="error">Ingresa un email válido</span>';
  10.             }else{ if($_POST['Asunto'] == ''){
  11.                 $errors[3] = '<span class="error">Ingresa el asunto del mensaje</span>';
  12.             }else{ if($_POST['Mensaje'] == ''){
  13.                 $errors[4] = '<span class="error">Ingresa el mensaje</span>';
  14.             }else{            
  15.                 $dest = "[email protected]"; //Email de destino
  16.                 $nombre = $_POST['Nombre'];
  17.                 $email = $_POST['Email'];
  18.                 $asunto = $_POST['Asunto']; //Asunto
  19.                 //Cabeceras del correo
  20.                 $header = 'From: ' . $email . " \r\n";
  21.                 $header .= "X-Mailer: PHP/" . phpversion() . " \r\n";
  22.                 $header .= "Mime-Version: 1.0 \r\n";
  23.                 $header .= "Content-Type: text/plain"; //
  24.                  
  25.                 $mensaje = "Nombre: " . $nombre . "\nAsunto: " . $asunto . " \r\n";
  26.                 $mensaje .= "E-mail: " . $email . " \r\n";
  27.                 $mensaje .= "Mensaje: " . $_POST['Mensaje'] . " \r\n";
  28.                 $mensaje .= "Enviado el " . date("d/m/y \a \l\a\s H:i:s ");
  29.                
  30.                 if(mail($dest,$asunto, utf8_decode($mensaje),$headers)){
  31.                     $result = '<div class="result_ok">Tu mensaje se envio correctamente.</a>';    
  32.                     // si el envio fue exitoso reseteamos lo que el usuario escribio:
  33.                     $_POST['nombre'] = '';
  34.                     $_POST['email'] = '';
  35.                     $_POST['asunto'] = '';
  36.                     $_POST['mensaje'] = '';
  37.                 }else{
  38.                     $result = '<div class="result_fail">Hubo un error al enviar el mensaje :(</a>';
  39.                 }
  40.             }
  41.         }
  42.             }}}
  43.     ?>
  44. <div id="respond">
  45.          <form id="form1" name="form1" method="post" action="">
  46.           <p>
  47.             <input name="Nombre" type="text" id="Nombre" size="30" value='<?php echo $_POST['Nombre']; ?>'/>
  48.             <label for="Nombre"><small>Nombre (Requerido)</small></label>
  49.           </p>
  50.           <p>
  51.             <input name="email" type="text" id="email" size="40" value='<?php echo $_POST['email']; ?>'/>
  52.             <label for="Email"><small>E-Mail (Requerido)</small></label>
  53.           </p>
  54.           <p>
  55.             <input name="Asunto" type="text" id="Asunto" size="100" value='<?php echo $_POST['Asunto']; ?>'/>
  56.             <label for="Asunto"><small>Asunto (Requerido)</small></label>
  57.           </p>
  58.           <p>
  59.             <textarea name="Mensaje" cols="500px" rows="10" id="Mensaje"><?php echo $_POST['Mensaje']; ?></textarea>
  60.             <label for="Mensaje" style="display:none;"><small>Mensaje  (Requerido)</small></label>
  61.           </p>
  62.           <p>
  63.             <input type='submit' value='Enviar Mensaje' class='boton' name='boton'/>
  64.             &nbsp;
  65.             <input name="Borrar" type="reset" id="Borrar" value="Borrar" /></center>
  66.           </p>
  67.         </form>
  68.        
  69.          </div>
  70.       <? echo $result; ?><?php echo $errors[1]; ?><?php echo $errors[2]; ?><?php echo $errors[3]; ?><?php echo $errors[4]; ?>
  71. </body>
__________________
El talento se educa en la KARMA y el carácter en la tempestad.
Gabriel De Los Santos
  #7 (permalink)  
Antiguo 19/04/2013, 13:45
 
Fecha de Ingreso: abril-2013
Mensajes: 45
Antigüedad: 11 años
Puntos: 0
Respuesta: Formulario de contacto

Gracias, todo solucionado.

Etiquetas: contacto, 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 05:28.