Foros del Web » Programando para Internet » PHP »

que fallo veis, validar mail

Estas en el tema de que fallo veis, validar mail en el foro de PHP en Foros del Web. Código: if($email == '') { die("Espacio en Blanco"); } if ((!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$", $email)) or (!getmxrr($emailhost1, $mxhostarr))){ header("location: fafasdfasdfaslo.html"); } El espacio en blanco me funciona, lo ...
  #1 (permalink)  
Antiguo 27/12/2009, 12:26
 
Fecha de Ingreso: julio-2009
Mensajes: 157
Antigüedad: 15 años, 4 meses
Puntos: 2
que fallo veis, validar mail

Código:
if($email == '') {
		die("Espacio en Blanco");
	}
		
if ((!ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*$", $email)) or (!getmxrr($emailhost1, $mxhostarr))){
    header("location: fafasdfasdfaslo.html");
}
El espacio en blanco me funciona, lo otro no :S se os ocurre por qué!
  #2 (permalink)  
Antiguo 27/12/2009, 12:32
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 11 meses
Puntos: 21
Respuesta: que fallo veis, validar mail

No te podria ayudar diciendote que esta mal, pero te recomiendo una otra funcion para validar emails, aca te la dejo.

Código PHP:
function comprobar_email($email){ 
    
$mail_correcto 0
    
//compruebo unas cosas primeras 
    
if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){ 
       if ((!
strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) { 
          
//miro si tiene caracter . 
          
if (substr_count($email,".")>= 1){ 
             
//obtengo la terminacion del dominio 
             
$term_dom substr(strrchr ($email'.'),1); 
             
//compruebo que la terminación del dominio sea correcta 
             
if (strlen($term_dom)>&& strlen($term_dom)<&& (!strstr($term_dom,"@")) ){ 
                
//compruebo que lo de antes del dominio sea correcto 
                
$antes_dom substr($email,0,strlen($email) - strlen($term_dom) - 1); 
                
$caracter_ult substr($antes_dom,strlen($antes_dom)-1,1); 
                if (
$caracter_ult != "@" && $caracter_ult != "."){ 
                   
$mail_correcto 1
                } 
             } 
          } 
       } 
    } 
    if (
$mail_correcto
       return 
1;        
    else 
       return 
0;    

  #3 (permalink)  
Antiguo 27/12/2009, 12:34
 
Fecha de Ingreso: julio-2009
Mensajes: 157
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: que fallo veis, validar mail

La he probado y tampoco me funcionaba, seria ponerlo tal cual?:

Código:
if($email == '') {
		die("Espacio en Blanco");
	}
function comprobar_email($email){ 
    $mail_correcto = 0; 
    //compruebo unas cosas primeras 
    if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){ 
       if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) { 
          //miro si tiene caracter . 
          if (substr_count($email,".")>= 1){ 
             //obtengo la terminacion del dominio 
             $term_dom = substr(strrchr ($email, '.'),1); 
             //compruebo que la terminación del dominio sea correcta 
             if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){ 
                //compruebo que lo de antes del dominio sea correcto 
                $antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1); 
                $caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1); 
                if ($caracter_ult != "@" && $caracter_ult != "."){ 
                   $mail_correcto = 1; 
                } 
             } 
          } 
       } 
    } 
    if ($mail_correcto) 
       return 1;        
    else 
       return 0;    
}
  #4 (permalink)  
Antiguo 27/12/2009, 12:36
 
Fecha de Ingreso: julio-2009
Mensajes: 157
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: que fallo veis, validar mail

Ahora tengo esto:
Código:
        $email = clean($_POST['email']);
if($email == '') {
		die("Espacio en Blanco");
	}
		
function comprobar_email($email){ 
    $mail_correcto = 0; 
    //compruebo unas cosas primeras 
    if ((strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){ 
       if ((!strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) { 
          //miro si tiene caracter . 
          if (substr_count($email,".")>= 1){ 
             //obtengo la terminacion del dominio 
             $term_dom = substr(strrchr ($email, '.'),1); 
             //compruebo que la terminación del dominio sea correcta 
             if (strlen($term_dom)>1 && strlen($term_dom)<5 && (!strstr($term_dom,"@")) ){ 
                //compruebo que lo de antes del dominio sea correcto 
                $antes_dom = substr($email,0,strlen($email) - strlen($term_dom) - 1); 
                $caracter_ult = substr($antes_dom,strlen($antes_dom)-1,1); 
                if ($caracter_ult != "@" && $caracter_ult != "."){ 
                   $mail_correcto = 1; 
                } 
             } 
          } 
       } 
    } 
    if ($mail_correcto) 
       return 1;        
    else 
       die("Espacssssssnco");    
}
y pongo una "q" y me lo acepta!
  #5 (permalink)  
Antiguo 27/12/2009, 12:39
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: que fallo veis, validar mail

Me parece que te la estas complicando demasiado....
Pensa, que necesitas saber del e-mail?

1) si tiene arroba y este no se repite
2) si tiene el .com, .net, etc y no se repite
3) si tiene un minimo de caracteres

Nada mas...
__________________
HV Studio
Diseño y desarrollo web
  #6 (permalink)  
Antiguo 27/12/2009, 12:43
 
Fecha de Ingreso: julio-2009
Mensajes: 157
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: que fallo veis, validar mail

y como podria quedar es que he probado muchisimos y ninguno me funciona y efectivamente, tienes razon!
  #7 (permalink)  
Antiguo 27/12/2009, 12:56
 
Fecha de Ingreso: diciembre-2009
Mensajes: 438
Antigüedad: 14 años, 11 meses
Puntos: 16
Respuesta: que fallo veis, validar mail

Te paso un enlace a un post muy interesante sobre validaciones de campos con expresiones regulares. Encontrarás como validar un e-mail. Espero te sirva:

http://techtastico.com/post/8-expresiones-regulares-para-php-muy-utiles/
  #8 (permalink)  
Antiguo 27/12/2009, 13:00
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: que fallo veis, validar mail

A ver:

Código PHP:

$email 
'este e-mail no sirve';

$largo strlen($email);

$com_net substr($email, -4$largo);

#el resto te las dejo xa q t diviertas


if(strstr($email,"@")){

echo 
"no tiene arroba!!"

#aca diez por poner algo, dsps cambialo si queres
}else if($largo 10){

echo 
"email muy corto!!";

}else if(
$com_net !== '.com'){

#bla bla bla

}else if($com_net !== '.net'){

#bla bla bla


Si no queres tener todo esto junto, metelo en una funcion y llamala para validar...
__________________
HV Studio
Diseño y desarrollo web
  #9 (permalink)  
Antiguo 27/12/2009, 13:02
 
Fecha de Ingreso: diciembre-2004
Ubicación: Madrid
Mensajes: 550
Antigüedad: 19 años, 10 meses
Puntos: 28
Respuesta: que fallo veis, validar mail

yo siempre uso esta expresión regular, no sé si te será útil:

var addressPattern = /^[^\s\n]+\@[a-zA-Z0-9][a-zA-Z0-9\-\.]*\.[a-zA-Z]{2,4}$/;
  #10 (permalink)  
Antiguo 27/12/2009, 13:03
 
Fecha de Ingreso: julio-2009
Mensajes: 157
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: que fallo veis, validar mail

Edito: Estoy leyendo
  #11 (permalink)  
Antiguo 27/12/2009, 13:12
 
Fecha de Ingreso: julio-2009
Mensajes: 157
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: que fallo veis, validar mail

Lo que no entiendo es por qué al poner:
Código:
if($email == '') {
		die("Espacio en Blanco");
	}

$largo = strlen($email);

$com_net = substr($email, -4, $largo);

//el resto te las dejo xa q t diviertas

if(strstr($email,"@")){

header("location: aaerrro.html");

// aca diez por poner algo, dsps cambialo si queres

}
else if($largo < 10){

header("location: corto.html");

}else if($com_net !== '.com'){

header("location: nocom.html");

}else if($com_net !== '.net'){

header("location: nonet.html");

}
pongo un espacio en blanco (lo dejo en blanco) y FUNCIONA pongo algo sin @, un 7, una x o lo que sea y el otro código NO funciona cuando se ve simple :S
  #12 (permalink)  
Antiguo 27/12/2009, 13:15
Avatar de jackson666  
Fecha de Ingreso: noviembre-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 1.971
Antigüedad: 15 años
Puntos: 65
Respuesta: que fallo veis, validar mail

Código PHP:
#aca te corregi esto
if(empty($email)) {
        die(
"Espacio en Blanco");
    }

$largo strlen($email);

$com_net substr($email, -4$largo);

#aca me habia equivocado yo
if(! strstr($email,"@")){

header("location: aaerrro.html");

// aca diez por poner algo, dsps cambialo si queres

}
else if(
$largo 10){

header("location: corto.html");

}else if(
$com_net !== '.com'){

header("location: nocom.html");

}else if(
$com_net !== '.net'){

header("location: nonet.html");


__________________
HV Studio
Diseño y desarrollo web
  #13 (permalink)  
Antiguo 27/12/2009, 13:19
 
Fecha de Ingreso: julio-2009
Mensajes: 157
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: que fallo veis, validar mail

Lo del empty funciona perfecto efectivamente, la igual que lo otro que tenia yo pero ni aún corrigiendo eso funciona, pongo "asjk" y me lo admite el cabr*n

Gracias!
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 21:38.