Foros del Web » Programando para Internet » PHP »

comprobar validez email

Estas en el tema de comprobar validez email en el foro de PHP en Foros del Web. Tenía un modo de comprobar que un email introducido en un formulario es válido: if (!ereg('^([a-zA-Z0-9\._]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})',$v5)){ echo $invalido_email; exit(); Pero ahora PHP me dice que ...
  #1 (permalink)  
Antiguo 28/04/2012, 05:17
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
comprobar validez email

Tenía un modo de comprobar que un email introducido en un formulario es válido:

if (!ereg('^([a-zA-Z0-9\._]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})',$v5)){
echo $invalido_email;
exit();

Pero ahora PHP me dice que la función ereg is deprecated, con lo cual necesito un sistema alternativo. ¿Sabéis de alguno?

Gracias anticipadas.
  #2 (permalink)  
Antiguo 28/04/2012, 05:40
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: comprobar validez email

Código PHP:
$v5 '[email protected]';
if (
preg_match('/^([a-zA-Z0-9\._]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})/',$v5)){
  echo 
'valid';    
}
else{
  echo 
'no valid';

saludos,
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 28/04/2012, 05:42
Avatar de tognaco  
Fecha de Ingreso: noviembre-2004
Mensajes: 147
Antigüedad: 19 años, 5 meses
Puntos: 1
Respuesta: comprobar validez email

Funciona perfectamente, muchas gracias
  #4 (permalink)  
Antiguo 28/04/2012, 06:15
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: comprobar validez email

Con el permiso de @tognaco aprovecho este tema para realizar una consulta:

Yo siempre he utilizado una función sin espresiones regulares para comprobar emails por optimización de tiempos.

Despues de ver este tema he realizado una comparativa entre funciones y el resultado me ha descolocado... ganan las espresiones regulares en tiempo.

Algún experto me podría verificar si he realizado la comparativa correctamente?

El resultado no es muy significativo pero hay está.

Código PHP:
    $email '[email protected]';
    function 
comprobar_email1($email){
        if (
preg_match('/^([a-zA-Z0-9\._]+)\@([a-zA-Z0-9\.-]+)\.([a-zA-Z]{2,4})/',$email)){
            echo 
'valid';    
        }
        else{
            echo 
'no valid';
        }
    }
    function 
comprobar_email2($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 terminacion 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)
           echo 
'valid';
        else
           echo 
'no valid';
    }
    function 
microtime_float()
    {
    list(
$useg$seg) = explode(" "microtime());
    return ((float)
$useg + (float)$seg);
    }
    echo 
microtime_float()."<br />";
    echo 
comprobar_email1($email)."<br />";
    echo 
microtime_float()."<br />";
    echo 
microtime_float()."<br />";
    echo 
comprobar_email2($email)."<br />";
    echo 
microtime_float()."<br />"
resultado:

Cita:
1335614994.9389
valid
1335614994.9389
1335614994.9389
valid
1335614994.939
edito: veo que el error está en usar la función microtime_float(), evidentemente el tiempo va pasando entre la comparativa, voy ha seguir con otas opciones.
__________________
Tu álbum de cromos online!!

Última edición por santris; 28/04/2012 a las 06:25
  #5 (permalink)  
Antiguo 28/04/2012, 06:32
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: comprobar validez email

bien!! cambiando esto:

Código PHP:
    $t1 microtime();
    echo 
comprobar_email1($email)."<br />";
    
$t2 microtime();
    echo 
$t2-$t1."<br />";
    
$t3 microtime();
    echo 
comprobar_email2($email)."<br />";
    
$t4 microtime();
    echo 
$t4-$t3."<br />"
el resultado es este:

Cita:
valid
5.9000000000003E-05
valid
5.1999999999996E-05
ahora gana en tiempo la función que no usa espresiones regulares,
__________________
Tu álbum de cromos online!!
  #6 (permalink)  
Antiguo 28/04/2012, 13:47
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: comprobar validez email

siempre he usado expresiones regulares para esto, pero he estado leyendo sobre http://php.net/manual/es/function.filter-var.php y haciendo esto
Código PHP:
Ver original
  1. $email = '[email protected]';
  2. var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
  3. echo microtime();
y me dio esto
Cita:
string(15) "[email protected]" 0.16533000 1335642172
sería cuestión de que probaras a ver que parece, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #7 (permalink)  
Antiguo 28/04/2012, 18:36
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: comprobar validez email

Cita:
Iniciado por carlos_belisario Ver Mensaje
sería cuestión de que probaras a ver que parece, saludos
Ohh!! desconocía esa función, tiene filtros muy interesantes.

Lastima que tenemos instalado php < 5.2.0 a ver si me cubro de valor y actualizo la versión de php para poder usarla.

Gracias por el aporte.
__________________
Tu álbum de cromos online!!
  #8 (permalink)  
Antiguo 28/04/2012, 21:36
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: comprobar validez email

pues creo que deberías de llenarte de valor y aprovechar las nuevas funcionalidades, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #9 (permalink)  
Antiguo 29/04/2012, 01:15
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: comprobar validez email

Cita:
Iniciado por carlos_belisario Ver Mensaje
pues creo que deberías de llenarte de valor y aprovechar las nuevas funcionalidades, saludos
La verdad esque la actualización la haría el compañero de sistemas, ya me ha comentado que se ha de hacer, pero ha de contar con mi aprobación ya que tenemos unos 300 dominios repartidos en tres máquinas.

La última actualización que hicimos 5.1.6 tube que actualizar un montón de código que estaba obsoleto y dejamos inoperativas webs de varios clientes durante unos días.

He de estudiar como afectaría la actualización al código existente.

Gracias,
__________________
Tu álbum de cromos online!!
  #10 (permalink)  
Antiguo 29/04/2012, 09:07
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: comprobar validez email

sería cuestión que hagan pruebas, antes de hacer la migración, pero personalmente cuando me toca indicar el host lo primero que veo es la versión de php que ofrece, si esta muy atrás ni lo miro.

Fíjate que andan bien atrás en cuando a la versión actual 5.3.11 según veo en el manual, entonces te privas de usar librerías que están hechas para trabajar a partir de esta versión y de usar alguna función como la que mencionamos en hilos anteriores.

Saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #11 (permalink)  
Antiguo 29/04/2012, 10:20
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: comprobar validez email

Cita:
Iniciado por carlos_belisario Ver Mensaje
sería cuestión que hagan pruebas, antes de hacer la migración, pero personalmente cuando me toca indicar el host lo primero que veo es la versión de php que ofrece, si esta muy atrás ni lo miro.

Fíjate que andan bien atrás en cuando a la versión actual 5.3.11 según veo en el manual, entonces te privas de usar librerías que están hechas para trabajar a partir de esta versión y de usar alguna función como la que mencionamos en hilos anteriores.

Saludos
Me estás liando @carlos , pero tienes toda la razón y además cuanto más demoremos mayor riesgo de incompatibilidades existirá.

Gracias de nuevo por tu tiempo.
__________________
Tu álbum de cromos online!!

Etiquetas: email, formulario, validez
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 07:45.