Foros del Web » Programando para Internet » PHP »

Para que un email sea verdadero y no falso

Estas en el tema de Para que un email sea verdadero y no falso en el foro de PHP en Foros del Web. Hola amigos! Estoy elaborando un sistema de registro de usuarios y ya he caminado harto gracias a ayuda de todos en este foro . Pero ...
  #1 (permalink)  
Antiguo 20/10/2010, 13:10
Avatar de saraivaruas  
Fecha de Ingreso: octubre-2010
Ubicación: Chile
Mensajes: 133
Antigüedad: 13 años, 6 meses
Puntos: 10
Para que un email sea verdadero y no falso

Hola amigos!

Estoy elaborando un sistema de registro de usuarios y ya he caminado harto gracias a ayuda de todos en este foro . Pero ahora necesito una ayuda con la verificacion de un mail o sea que al momento de que el usuario se registre se registre con un mail que exista de verdad y no cualquiera mail inventado en el momento...

saludos a todos
  #2 (permalink)  
Antiguo 20/10/2010, 13:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Tema movido desde Configuración PHP a PHP
  #3 (permalink)  
Antiguo 20/10/2010, 14:06
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Para que un email sea verdadero y no falso

1.-Puedes validar la estructura de un correo mediante, javascript, php o expresiones regulares
2.-Podrias generar un codigo con php el cual lo podrias insertas en la bd y luego enviarselo al usuario al momento de que se registre y cuando quiera acceder al sitio pues le pides el codigo

espero haberte ayudado
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #4 (permalink)  
Antiguo 20/10/2010, 14:18
Avatar de saraivaruas  
Fecha de Ingreso: octubre-2010
Ubicación: Chile
Mensajes: 133
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Para que un email sea verdadero y no falso

Cita:
Iniciado por zapt142 Ver Mensaje
1.-Puedes validar la estructura de un correo mediante, javascript, php o expresiones regulares
2.-Podrias generar un codigo con php el cual lo podrias insertas en la bd y luego enviarselo al usuario al momento de que se registre y cuando quiera acceder al sitio pues le pides el codigo

espero haberte ayudado

Hola Zapt!

Este e es mi codigo pero algo estoy haciendo mal miralo:

Código PHP:
<?php 

if (!$HTTP_POST_VARS){ 
echo 
"<html><body> 
<form action=p2.php method=POST> 
 <input type=text name=mail> 
 <input type=submit name=boton value=Aceptar> 
 </form> 
</html>"


else { 
 
ValidateMail ($mail); 
 

        function 
ValidateMail($Email) { 
            global 
$HTTP_HOST
    
$result ValidateMail($correo); 
   
if (!
eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"$Email)) { 

  
$result[0]=false
        
$result[1]="$Email is not properly formatted"
        return 
$result
    } 




   list ( 
$Username$Domain ) = split ("@",$Email); 

   if (
getmxrr($Domain$MXHost))  { 

        
$ConnectAddress $MXHost[0]; 
    } else { 

        
$ConnectAddress $Domain

    } 


        
$Connect fsockopen $ConnectAddress25 ); 

    if (
$Connect) { 

        if (
ereg("^220"$Out fgets($Connect1024))) { 

           
fputs ($Connect"HELO $HTTP_HOST\r\n"); 
           
$Out fgets $Connect1024 ); 
           
fputs ($Connect"MAIL FROM: <{$Email}>\r\n"); 
           
$From fgets $Connect1024 ); 
           
fputs ($Connect"RCPT TO: <{$Email}>\r\n"); 
           
$To fgets ($Connect1024); 
           
fputs ($Connect"QUIT\r\n"); 
           
fclose($Connect); 
            if (!
ereg ("^250"$From) || 
!
ereg "^250"$To )) { 
               
$result[0]=false
               
$result[1]="Server rejected address"
               return 
$result

            } 
        } else { 

            
$result[0] = false
            
$result[1] = "No response from server"
            return 
$result
          } 

    }  else { 

        
$result[0]=false
        
$result[1]="Can not connect E-Mail server."
        return 
$result
    } 



    
$result[0]=true
    
$result[1]="$Email appears to be valid."
    return 
$result


?>
  #5 (permalink)  
Antiguo 20/10/2010, 14:28
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Para que un email sea verdadero y no falso

Pero cual es el error? o te marca algo?
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #6 (permalink)  
Antiguo 20/10/2010, 14:34
Avatar de saraivaruas  
Fecha de Ingreso: octubre-2010
Ubicación: Chile
Mensajes: 133
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Para que un email sea verdadero y no falso

Cita:
Iniciado por saraivaruas Ver Mensaje
Hola Zapt!

Este e es mi codigo pero algo estoy haciendo mal miralo:

Código PHP:
<?php 

if (!$HTTP_POST_VARS){ 
echo 
"<html><body> 
<form action=p2.php method=POST> 
 <input type=text name=mail> 
 <input type=submit name=boton value=Aceptar> 
 </form> 
</html>"


else { 
 
ValidateMail ($mail);  

        function 
ValidateMail($Email) { 
            global 
$HTTP_HOST
    
$result ValidateMail($correo); 
   
if (!
eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$"$Email)) { 

  
$result[0]=false
        
$result[1]="$Email is not properly formatted"
        return 
$result
    } 




   list ( 
$Username$Domain ) = split ("@",$Email); 

   if (
getmxrr($Domain$MXHost))  { 

        
$ConnectAddress $MXHost[0]; 
    } else { 

        
$ConnectAddress $Domain

    } 


        
$Connect fsockopen $ConnectAddress25 ); 

    if (
$Connect) { 

        if (
ereg("^220"$Out fgets($Connect1024))) { 

           
fputs ($Connect"HELO $HTTP_HOST\r\n"); 
           
$Out fgets $Connect1024 ); 
           
fputs ($Connect"MAIL FROM: <{$Email}>\r\n"); 
           
$From fgets $Connect1024 ); 
           
fputs ($Connect"RCPT TO: <{$Email}>\r\n"); 
           
$To fgets ($Connect1024); 
           
fputs ($Connect"QUIT\r\n"); 
           
fclose($Connect); 
            if (!
ereg ("^250"$From) || 
!
ereg "^250"$To )) { 
               
$result[0]=false
               
$result[1]="Server rejected address"
               return 
$result

            } 
        } else { 

            
$result[0] = false
            
$result[1] = "No response from server"
            return 
$result
          } 

    }  else { 

        
$result[0]=false
        
$result[1]="Can not connect E-Mail server."
        return 
$result
    } 



    
$result[0]=true
    
$result[1]="$Email appears to be valid."
    return 
$result


?>


me tira el error en ValidateMail ($mail)

Llamado a la validatemail función no definida ()
trate de varias formas y no se que hago mal...
  #7 (permalink)  
Antiguo 20/10/2010, 14:36
Avatar de saraivaruas  
Fecha de Ingreso: octubre-2010
Ubicación: Chile
Mensajes: 133
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Para que un email sea verdadero y no falso

Cita:
Iniciado por zapt142 Ver Mensaje
Pero cual es el error? o te marca algo?


Me tira el error en ValidateMail ($mail)

Llamado a la validatemail función no definida ()
trate de varias formas y no se que hago mal...
  #8 (permalink)  
Antiguo 20/10/2010, 14:43
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Para que un email sea verdadero y no falso

Cita:
Iniciado por saraivaruas Ver Mensaje
Me tira el error en ValidateMail ($mail)

Llamado a la validatemail función no definida ()
trate de varias formas y no se que hago mal...
Hola
Intenta poner esa función antes del if else que tienes
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #9 (permalink)  
Antiguo 20/10/2010, 14:47
Avatar de saraivaruas  
Fecha de Ingreso: octubre-2010
Ubicación: Chile
Mensajes: 133
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Para que un email sea verdadero y no falso

Cita:
Iniciado por mortiprogramador Ver Mensaje
Hola
Intenta poner esa función antes del if else que tienes
saludos
hola! ya lo habia intentado pero me tira el error y solo cambia de linea

ejemplo: error en linea 3
saludos seguire intentando
  #10 (permalink)  
Antiguo 20/10/2010, 14:57
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Para que un email sea verdadero y no falso

Código HTML:
Ver original
  1. ValidateMail ($mail);


donde declaras $mail??
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #11 (permalink)  
Antiguo 20/10/2010, 15:03
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Para que un email sea verdadero y no falso

bueno, te sugiero revises bien la función, ve poniendo secciones
en comentarios y revisa que paulatinamente te devuelva
resultados

saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #12 (permalink)  
Antiguo 20/10/2010, 18:44
Avatar de saraivaruas  
Fecha de Ingreso: octubre-2010
Ubicación: Chile
Mensajes: 133
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Para que un email sea verdadero y no falso

Cita:
Iniciado por mortiprogramador Ver Mensaje
bueno, te sugiero revises bien la función, ve poniendo secciones
en comentarios y revisa que paulatinamente te devuelva
resultados

saludos

He logrado que no me tire el error pero ahora no me devuelve ningun valor o sea no me dice si el mail es valido o no

saludos!
  #13 (permalink)  
Antiguo 21/10/2010, 06:06
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Para que un email sea verdadero y no falso

pregunto dos cosas

0. como ha quedado?
1. esto lo venias sacando de algún tutorial?
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #14 (permalink)  
Antiguo 21/10/2010, 06:45
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Para que un email sea verdadero y no falso

Cita:
Iniciado por saraivaruas Ver Mensaje
Hola amigos!

Estoy elaborando un sistema de registro de usuarios y ya he caminado harto gracias a ayuda de todos en este foro . Pero ahora necesito una ayuda con la verificacion de un mail o sea que al momento de que el usuario se registre se registre con un mail que exista de verdad y no cualquiera mail inventado en el momento...

saludos a todos
A ver, como son las cosas?
para validar la sintáxis de email con php podes usar

Código PHP:
Ver original
  1. $correo = $_POST['correo'];
  2.  
  3. if (!empty($correo)){
  4. ## advertir que 2,4 --> para aceptar nuevos dominios (.info, etc)
  5. $control_mail="^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$";
  6. if(!eregi($control_mail,$correo)){
  7. $mensaje_error = "La <b>sintáxis de email</b> no es válida<br />\n";
  8. $error = 1;
  9. }
  10. }

Pero volviendo a tu pregunta original, validar una sintáxis de email no siginifica que ese email fuese real, pueden poner la dirección que se les ocurra, en tanto la sintáxis sea apropiada.


Lo que deberías hacer es incluir en tu sistema una función para verificación de la cuenta enviando un email al subscriptor.


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #15 (permalink)  
Antiguo 21/10/2010, 14:59
Avatar de saraivaruas  
Fecha de Ingreso: octubre-2010
Ubicación: Chile
Mensajes: 133
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Para que un email sea verdadero y no falso

Cita:
Iniciado por emprear Ver Mensaje
A ver, como son las cosas?
para validar la sintáxis de email con php podes usar

Código PHP:
Ver original
  1. $correo = $_POST['correo'];
  2.  
  3. if (!empty($correo)){
  4. ## advertir que 2,4 --> para aceptar nuevos dominios (.info, etc)
  5. $control_mail="^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,4}$";
  6. if(!eregi($control_mail,$correo)){
  7. $mensaje_error = "La <b>sintáxis de email</b> no es válida<br />\n";
  8. $error = 1;
  9. }
  10. }

Pero volviendo a tu pregunta original, validar una sintáxis de email no siginifica que ese email fuese real, pueden poner la dirección que se les ocurra, en tanto la sintáxis sea apropiada.


Lo que deberías hacer es incluir en tu sistema una función para verificación de la cuenta enviando un email al subscriptor.


Saludos




Hola a todos! realmente es dificil conseguir saber si el mail es real o no ya logre validar la sintaxes y creo que tendre que buscar la forma de validar por mail solo asi sabre que es verdadero si alguien conoces alguna forma de activacion por mail los agradesco garacias y cuando tenga listo mis sitema de registro. lo pondre como aporte el el foro por la ayuda de todos.

saludos!
  #16 (permalink)  
Antiguo 21/10/2010, 15:41
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 16 años, 9 meses
Puntos: 1567
Respuesta: Para que un email sea verdadero y no falso

saraivaruas:
es de suponer que tras el post en el form de registro, vos estas almacenando los valores (supongamos, nombre y email) en una base de datos, para hacer la verificación, tenes que crear un paso intermedio,

en lugar de guardar en la BD, guardas los datos en un archivo en una carpeta temporal /tmp, para el nombre del archivo, debes tener un nombre único, podes usar md5($email); (quedaría un archivo del tipo 29e65556224146b056d1f215f83d7b6e.txt ) en ese archivo guardas en cada linea los valores ingresados
A continuación envias un email a la dirección que te ingresaron pidiendo que complete el proceso de registro usando el siguiente link...e incluis en el texto del mensaje un link a, por ejemplo

confirmar.php?usuario=29e65556224146b056d1f215f83d 7b6e
(el valor usuario es el mismo valor del $md5($email); )

tras el envio mostras un mensaje:
se ha enviado un email a $email, para que complete el proceso de registro

ahora en confirmar.php haces que la script verifique la existencia del archivo
"/tmp/". $_GET['usuario'] . ".txt";
lo abra, lea cada linea y guarde, ahora si en forma definitiva, lo valores en la base de datos.

finalmente haces unlink(); del archivo temporal

Hay otras formas de hacer esto, y seguramente alguna otra más optimizada, pero al menos con este sistema no tenés que modificar tu BD.

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.

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 10:21.