Foros del Web » Programando para Internet » PHP »

Validar e_mail

Estas en el tema de Validar e_mail en el foro de PHP en Foros del Web. Bueno soy más q un novato en php :) pero con ganas de aprender... Lo mío es sencillo, quiero validar el campo e_mail, más concretamente ...
  #1 (permalink)  
Antiguo 29/11/2011, 21:05
 
Fecha de Ingreso: abril-2011
Ubicación: Colombia
Mensajes: 59
Antigüedad: 13 años
Puntos: 19
Validar e_mail

Bueno soy más q un novato en php :) pero con ganas de aprender...
Lo mío es sencillo, quiero validar el campo e_mail, más concretamente donde dice:
elseif($_POST['e_mail'] == '') {
echo "<div class='aviso'>Ingrese su E-mail</div>";
}
Bueno y si pueden echarme una mano con el nombre pues no estaría demás xD
Me gustaría q fuera con preg_match estuve leyendo y creo q es buena. Aunq tambn hay FILTER_VALIDATE_EMAIL pero creo q tiene sus fallas... bueno total... me gustaría saber como incluirla en el siguiente código, q es el formulario y comprobación a la vez.
Gracias!

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3. ?>
  4.  
  5. <?php
  6.     if(isset($_POST['enviar'])) {
  7.         $Message = "";
  8.         $Captcha = (string) $_POST["CAPTCHA_CODE"];
  9.         if($_POST['name'] == '') {
  10.             echo "<div class='aviso'>Ingrese su Nombre</div>";
  11.         }elseif($_POST['e_mail'] == '') {
  12.             echo "<div class='aviso'>Ingrese su E-mail</div>";
  13.         }elseif($_POST['mensaje'] == '') {
  14.             echo "<div class='aviso'>Ingrese su Mensaje</div>";
  15.         }elseif(sha1($Captcha) != $_SESSION["CAPTCHA_CODE"]) {
  16.             $Message = "<div class='aviso'>El c&oacute;digo de validaci&oacute;n no ha sido ingresado o es incorrecto</div>";
  17.         }else {
  18. $e_mail = $_POST['e_mail'];
  19. $nickname = $_POST['name'];
  20. $comenta = $_POST['mensaje'];
  21. $message = "Nickname:".$nickname."E-mail:".$e_mail."Mensaje:".$comenta."";
  22. (mail($mail,"Mensaje de Contacto",$message));
  23. $comentario=$_REQUEST['mensaje'];// Escribo en el archivo de opiniones lo que el usuario dijo:
  24. $archivo=fopen ("contact.txt","a") or die ("No se pudo guardar su opinion"); // Abro el archivo
  25. fputs ($archivo,"Nickname: $_REQUEST[name]"); // Escribo el nombre del visitante
  26. fputs ($archivo,"\n"); // Dejo una linea de salto
  27. fputs ($archivo,"Mensaje:"); // Pongo de titulo la palabra "Comentario:" antes de lo que dijo el visitante.
  28. fputs ($archivo,"\n"); // Linea de salto
  29. fputs ($archivo,"$mensaje"); // Escribo la opinion
  30. fputs ($archivo,"\n"); // Linea de salto
  31. fputs ($archivo,"<hr>"); // Separo una opinion de otra
  32. fputs ($archivo,"\n"); // Y dejo otra linea de salto.
  33. fclose ($archivo); // Cierro el archivo
  34. header('Location: /contact/');
  35.         }
  36.     }
  37.     if(!empty($Message)) {
  38.         // Muestro los posibles errores de validación previos.
  39.         echo "$Message";
  40.     }
  41. // Si aún no se han enviado los datos, mostramos el formulario
  42. ?>
  43. <form name="frm" method="post" action="../contact/"  id="form">
  44. <label>Nombre:</label><input type="text" name="name" id='name' size="35"/>
  45. <label>E-mail:</label><input type="text" name="e_mail" id='e_mail' size="35" />
  46. <label>Mensaje:</label><textarea name="mensaje" cols="26" rows="8" id='mensaje'></textarea>
  47. <img src="captcha.php" />
  48. <label>Ingrese el c&oacute;digo:</label>
  49. <input type="text" name="CAPTCHA_CODE" size="15" /><br />
  50. <input type="submit" class="btn" name="enviar" value="ENVIAR"/>&nbsp;<input type="reset" class="btn" name="borrar" value="BORRAR"/>
  51.  
  52. </form>
  53. </div>
  54. </div>
  55. </div>
  56. </div>
  57. </body>
  58. </html>
  #2 (permalink)  
Antiguo 30/11/2011, 16:27
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Validar e_mail

Deberias hacerlo con expresiones regulares, pegale una leida a este blog:

http://boozox.net/php/manual-complet...ulares-en-php/

Igual verifica en el manual las funciones que alli aparecen porque algunas de ellas creo que ya entraron en desuso para php5.

Luego busca como hacer expresiones regulares para validar email.

Espero te sea de utilidad la información.
  #3 (permalink)  
Antiguo 30/11/2011, 16:37
Avatar de molig  
Fecha de Ingreso: septiembre-2006
Ubicación: Acapulco
Mensajes: 50
Antigüedad: 17 años, 7 meses
Puntos: 15
Exclamación Respuesta: Validar e_mail

en php:

Código PHP:
function validarEmail($email){
    
$reg "#^(((( [a-z\d]  [\.\-\+_] ?)*) [a-z0-9] )+)\@(((( [a-z\d]  [\.\-_] ?){0,62}) [a-z\d] )+)\.( [a-z\d] {2,6})$#i";
    return 
preg_match($reg$email);
}
 
if(
validarEmail("[email protected]"))
    echo 
"email valido";
else
    echo 
"email invalido"
O puedes hacer la validación antes de enviar al formulario con JavaScript, también con expresiones regulares.

Código:
<script type="text/javascript">  
<!--  
function validaMail(campo) {  
    var RegExPattern = /[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/;  
    if ((campo.value.match(RegExPattern)) && (campo.value!='')) {  
        alert('mail correcto');   
    } else {  
        alert('mail incorrecto');  
        document.getElementById("correo").focus();  
    }   
}  
//-->  
</script>

<input type="text" id="correo" onblur="validaMail(this);">
__________________
He aprendido que un hombre
sólo tiene derecho a mirar a otro hacia abajo,
cuando ha de ayudarle a levantarse.
GGM

Última edición por molig; 30/11/2011 a las 16:45
  #4 (permalink)  
Antiguo 01/12/2011, 12:03
 
Fecha de Ingreso: abril-2011
Ubicación: Colombia
Mensajes: 59
Antigüedad: 13 años
Puntos: 19
Respuesta: Validar e_mail

Gracias cuasatar por el material a leer... extenso - pero bueno. y a molig lo tendré en cuenta, según investigué se puede hacer de dos formas: del lado del cliente con Javascript (si está activado) pero para mayor seguridad con Php del lado del servidor... encontré un ejemplo así (de doble validación) muy bueno.

Pero al final incluí en el código anterior lo siguiente para el caso del e_mail:

Código PHP:
Ver original
  1. }elseif($_POST['e_mail'] == '' or !preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/",$_POST['e_mail'])) {
  #5 (permalink)  
Antiguo 01/12/2011, 12:22
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Validar e_mail

Sin machacarse tanto la cabeza con expresiones regulares:

Código PHP:
Ver original
  1. <?php
  2. $email = "someone@exa mple.com";
  3.  
  4. if(!filter_var($email, FILTER_VALIDATE_EMAIL))
  5.   {
  6.   echo "E-mail no es valido";
  7.   }
  8. else
  9.   {
  10.   echo "E-mail es valido";
  11.   }
  12. ?>

NOTA: Solo funciona a partir de PHP 5
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #6 (permalink)  
Antiguo 01/12/2011, 12:56
 
Fecha de Ingreso: abril-2011
Ubicación: Colombia
Mensajes: 59
Antigüedad: 13 años
Puntos: 19
Respuesta: Validar e_mail

jotaincubus Tambien lo había leido gracias y te dejo el "Karmita". Pero ¿cómo incluyo esa función en el código de arriba? Te lo agradecería.
  #7 (permalink)  
Antiguo 01/12/2011, 13:04
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años
Puntos: 394
Respuesta: Validar e_mail

Código PHP:
Ver original
  1. elseif($_POST['e_mail'] == '' or  !filter_var($_POST['e_mail'], FILTER_VALIDATE_EMAIL))
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #8 (permalink)  
Antiguo 01/12/2011, 13:57
 
Fecha de Ingreso: abril-2011
Ubicación: Colombia
Mensajes: 59
Antigüedad: 13 años
Puntos: 19
Respuesta: Validar e_mail

OK jotaincubus tambien funciona brother... Gracias!

Etiquetas: email
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 20:09.