Foros del Web » Programando para Internet » PHP »

Formulario PHP y Validacion, no funciona.

Estas en el tema de Formulario PHP y Validacion, no funciona. en el foro de PHP en Foros del Web. Hola, tengo el siguiente código, lo que intento es validar un email si esta correcto que envie el email y si no que falle como ...
  #1 (permalink)  
Antiguo 25/11/2011, 09:42
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Formulario PHP y Validacion, no funciona.

Hola, tengo el siguiente código, lo que intento es validar un email si esta correcto que envie el email y si no que falle como es obvio, pero no funciona :S.

Código PHP:
Ver original
  1. <h2>Formulario de contacto:</h2>
  2.                     <?php
  3.                    
  4.                     function check_email_address($email)
  5. {
  6.     // Primero, checamos que solo haya un símbolo @, y que los largos sean correctos
  7.   if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email))
  8.     {
  9.         // correo inválido por número incorrecto de caracteres en una parte, o número incorrecto de símbolos @
  10.     return false;
  11.   }
  12.   // se divide en partes para hacerlo más sencillo
  13.   $email_array = explode("@", $email);
  14.   $local_array = explode(".", $email_array[0]);
  15.   for ($i = 0; $i < sizeof($local_array); $i++)
  16.     {
  17.     if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i]))
  18.         {
  19.       return false;
  20.     }
  21.   }
  22.   // se revisa si el dominio es una IP. Si no, debe ser un nombre de dominio válido
  23.     if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1]))
  24.     {
  25.      $domain_array = explode(".", $email_array[1]);
  26.      if (sizeof($domain_array) < 2)
  27.          {
  28.         return false; // No son suficientes partes o secciones para se un dominio
  29.      }
  30.      for ($i = 0; $i < sizeof($domain_array); $i++)
  31.          {
  32.         if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i]))
  33.                 {
  34.            return false;
  35.         }
  36.      }
  37.   }
  38.   return true;
  39. }
  40.                    
  41.                    
  42.                    
  43.                    
  44.                     if (!isset($_POST['mail'])) {
  45.                    
  46.                     ?>
  47.                     <form id="ContactForm" action="<?=$_SERVER['PHP_SELF']?>" method="post">
  48.                         <div class="wrapper pad_bot1">
  49.                             <div class="wrapper">
  50.                                 <div class="bg"><input type="text" name="nombre" class="input" placeholder="Introduce tu nombre" required /></div>Nombre:<br />
  51.                             </div>
  52.                             <div class="wrapper">
  53.                                 <div class="bg"><input type="text" name="mail" class="input" placeholder="Introduce tu correo" required /></div>E-mail:<br />
  54.                             </div>
  55.                             <div class="wrapper">
  56.                                 <div class="bg"><div class="textarea"><textarea name="mensaje" cols="1" rows="1" placeholder="Introduce tu mensaje lo más detalladamente posible, ej; Me gustaría contratar sus servicios para la maquetacion de un logo." required ></textarea></div></div>Mensaje:<br />
  57.                             </div>
  58.                            
  59.                         </div>
  60.                     </form>
  61.                     <?php
  62.                     }else{
  63.                      $email = $_POST['mail'];
  64.                         if (check_email_address($email)){
  65.                       $nombre = $_POST['nombre'];
  66.                         $mail = $_POST['mail'];
  67.                         $mensaje = $_POST['mensaje'];
  68.  
  69.                         $header = 'De: ' . $mail . " \r\n";
  70.                         $header .= "Desde: PHP/" . phpversion() . " \r\n";
  71.                         $header .= "Version: 1.0 \r\n";
  72.                         $header .= "Contenido de tipo: texto/plano";
  73.  
  74.                         $mensaje = "Este mensaje fue enviado por " . $nombre .  " \r\n";
  75.                         $mensaje .= "Su e-mail es: " . $mail . " \r\n";
  76.                         $mensaje .= "Mensaje: " . $mensaje . " \r\n";
  77.                         $mensaje .= "Enviado el " . date('d/m/Y', time());
  78.  
  79.                         $para = '[email protected]';
  80.                         $asunto = 'Contacto de Prueba';
  81.  
  82.                         mail($para, $asunto, utf8_decode($mensaje), $header);
  83.  
  84.                         echo '&estatus=ok&';
  85.                     }else {
  86.                     echo "Email Invalido, Imposible enviar el correo";}
  87.                 }
  88. ?>
  #2 (permalink)  
Antiguo 25/11/2011, 09:46
 
Fecha de Ingreso: octubre-2010
Mensajes: 123
Antigüedad: 13 años, 5 meses
Puntos: 10
Respuesta: Formulario PHP y Validacion, no funciona.

podrías ser mas especifico, en que falla que hace?
  #3 (permalink)  
Antiguo 25/11/2011, 09:48
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Formulario PHP y Validacion, no funciona.

Cita:
Iniciado por dksoft Ver Mensaje
podrías ser mas especifico, en que falla que hace?
Nada, no falla o no hace nada :S.

Lo puedes comprobar en http://grupoasir.es/index.php?id=3

PD: utiliza el boton "enviar consulta" no el boton "enviar" ;)
  #4 (permalink)  
Antiguo 27/11/2011, 07:06
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Formulario PHP y Validacion, no funciona.

Nadie sabe como ayudarme?
  #5 (permalink)  
Antiguo 27/11/2011, 12:35
Avatar de Rodrhigo  
Fecha de Ingreso: septiembre-2011
Ubicación: Temuco-Valdivia-Osorno
Mensajes: 254
Antigüedad: 12 años, 7 meses
Puntos: 48
Respuesta: Formulario PHP y Validacion, no funciona.

man utiliza filter_var para validar email.
Código PHP:
Ver original
  1. <?php
  2. $email_a = '[email protected]';
  3. $email_b = 'bogus';
  4.  
  5. if (filter_var($email_a, FILTER_VALIDATE_EMAIL)) {
  6.     echo "Esta dirección de correo (email_a) es válida.";
  7. }
  8. if (filter_var($email_b, FILTER_VALIDATE_EMAIL)) {
  9.     echo "Esta dirección de correo (email_b) es válida.";
  10. }
  11. ?>

http://www.php.net/manual/es/filter....validation.php
  #6 (permalink)  
Antiguo 27/11/2011, 14:08
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Formulario PHP y Validacion, no funciona.

Ya lo he arreglado, os dejo el codigo amigos.

Código PHP:
Ver original
  1. <?php
  2.                     if (!isset($_POST['mail'])) {
  3.                    
  4.                     ?>
  5.                     <form id="ContactForm" action="<?$_SERVER['PHP_SELF']?>" method="post">
  6.                         <div class="wrapper pad_bot1">
  7.                             <div class="wrapper">
  8.                                 <div class="bg"><input type="text" name="nombre" class="input" placeholder="Introduce tu nombre" required /></div>Nombre:<br />
  9.                             </div>
  10.                             <div class="wrapper">
  11.                                 <div class="bg"><input type="text" name="mail" class="input" placeholder="Introduce tu correo" required /></div>E-mail:<br />
  12.                             </div>
  13.                             <div class="wrapper">
  14.                                 <div class="bg"><div class="textarea"><textarea name="mensaje" cols="1" rows="1" placeholder="Introduce tu mensaje lo más detalladamente posible, ej; Me gustaría contratar sus servicios para la maquetacion de un logo." required ></textarea></div></div>Mensaje:<br />
  15.                             </div>
  16.                             <div class="wrapper">
  17.                                 <input type="submit">
  18.                                 <a href="#" class="button" onClick="document.getElementById('ContactForm').submit()"><span><span>Enviar</span></span></a>
  19.                                 <a href="#" class="button marg_right1" onClick="document.getElementById('ContactForm').reset()"><span><span>Borrar</span></span></a>
  20.                             </div>
  21.                         </div>
  22.                     </form>
  23.                     <?php
  24.                     }else{
  25.                         $nombre = $_POST['nombre'];
  26.                         $mail = $_POST['mail'];
  27.                         $mensaje = $_POST['mensaje'];
  28.                        
  29.                         if (filter_var($mail, FILTER_VALIDATE_EMAIL)){
  30.                      
  31.  
  32.                         $header = 'De: ' . $mail . " \r\n";
  33.                         $header .= "Desde: PHP/" . phpversion() . " \r\n";
  34.                         $header .= "Version: 1.0 \r\n";
  35.                         $header .= "Contenido de tipo: texto/plano";
  36.  
  37.                         $mensaje = "Este mensaje fue enviado por $nombre \n Su e-mail es : $mail \n Mensaje: $mensaje \n Enviando el: ".date('d/m/Y', time())." \n";
  38.                         $para = '[email protected]';
  39.                         $asunto = 'Contacto de Prueba';
  40.  
  41.                         mail($para, $asunto, utf8_decode($mensaje), $header);
  42.  
  43.                         echo 'Correo enviado correctamente, te atenderemos lo antes posible.';
  44.                     }else{
  45.                     echo "El Email Invalido, Imposible enviar el correo. <br> <a href=\"index.php?id=3\">Volver Atrás.</a>";}
  46.                 }
  47. ?>


PD:Gracias x lo de filter_var Rodrhigo

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 22:59.