Comunidad de diseño web y desarrollo en internet online

Probelma con codigo de validacion

Citar            
MensajeEscrito el 07 Jul 2010 09:02 am
No se porque no me funciona este codigo, no me muestra nada por pantalla, lo he revisado y nose que pasa.

escribió:

<?
$email = "a@com";
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;
echo "Correcto";
} else {
$mail_correcto = 0;
echo "Incorrecto";}
}

}

}

}

}
?>

Por S?RGI0

44 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Jul 2010 12:14 pm
Hola

La verdad es que estas usando un método muy tedioso y complicado, tanta condicional me dio hasta dolor de cabeza xD.

Existe una función de PHP llamada preg_match, es una opción muy recomendada a la hora de verificar si un campo de mail es correcto o no. Aquí te dejo la función que uso para comprobar si el mail es correcto o no:

Código PHP :

function validar_email($var_emial){ 
    if(preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/',$var_emial)){
      echo "Mail valido";
   }else{
      echo "Mail Invalido";
   }
}

La forma de uso seria simple, se envía la variable del email a la función:

Código PHP :

validar_email($email);

Haciendole algunos arreglos a las condicionales de esta función puedes conseguir lo que necesitas, por ejemplo puedes añadir lo que le decías al interprete que enviara en pantalla si el email era o no valido.

Saludos :)

Por Quarterback

171 de clabLevel

1 tutorial

Genero:Masculino  

Santa Marta, Colombia

chrome
Citar            
MensajeEscrito el 07 Jul 2010 01:44 pm
Entiendo tu codigo gracias, pero podria cambiarlo de tal forma que al no cumplir

Código PHP :

 if(preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/',$var_emial)){

me muestre

Código PHP :

echo "Mail Invalido";


Es decir que tal y como tu lo has puesto dice si cumple el if "mail valido" sino "mail invalido".
Yo lo que quiero hacer es que (lo haga al reves) si no es valido vuelva al formulario, y si es correcto siga con el codigo.


Muchas gracias.

Por S?RGI0

44 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Jul 2010 01:56 pm
Hola

Claro que si es posible, solo añadele un signo de admiracion al inicio del preg_match para hacer que haga lo contrario, e invertir los resultados de las condicionales. La función al final seria así:

Código PHP :

function validar_email($var_emial){  
    if(!preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/',$var_emial)){ 
      echo "Mail Invalido"; 
   }else{ 
      echo "Mail valido"; 
   } 
}


Se usa de la misma manera, asi que no tiene complicaciones ;).

Saludos

Por Quarterback

171 de clabLevel

1 tutorial

Genero:Masculino  

Santa Marta, Colombia

chrome
Citar            
MensajeEscrito el 07 Jul 2010 02:39 pm
Estaba usando lo mismo pero en otro lugar, por eso no funcionaba.
Me gustaria hacer que cuando sea "mail invalido", el script se pare y se redireccione a otra pagina.

Código PHP :

if(!preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/',$email)){ 
      echo "Mail Invalido"; 


Es posible estoy intentando pero me direcciona cuando hace todo el codigo.

Por S?RGI0

44 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Jul 2010 02:45 pm
Claro que es posible, debe ser algun error de sintaxis. El codigo de la funcion seria mas o menos asi:

Código PHP :

function validar_email($var_emial){   
    if(!preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/',$var_emial)){  
      echo "Mail Invalido";
      header("location:http://webaredireccionar.com/");
   }else{  
      echo "Mail valido";  
   }  
}


Veo que tus dudas van ya a algo que esta fuera del tema principal xD, si quieres nos contactamos por correo o algún chat on line y te ayudo algo mas rápido, te dejo mi hotmail por si algo: [email protected]

Saludos :P

Por Quarterback

171 de clabLevel

1 tutorial

Genero:Masculino  

Santa Marta, Colombia

chrome
Citar            
MensajeEscrito el 07 Jul 2010 03:03 pm
Te envie un e-mail, y asi no desviamos el tema.

Por S?RGI0

44 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.