curso SEO Training Rosa
Grupo SEO TELEGRAM [Click Aquí]
Resultados 1 al 8 de 8
Tema:

Necesito un script PHP para validar e-mails!

  1. #1
    nicolas2 está desconectado Registrado
    Rango: Google es mi amigo

    User Info Menu

    Predeterminado Necesito un script PHP para validar e-mails!

    Resulta que tengo una Base de Datos con más de 1.000 usuarios registrados desde hace algún tiempo, y cometí el típico error de "programador principiante" y no valide que las direcciones de e-mails fueran correctas. (razones: mal escritas, usuarios tontos que ponen: aaa@sss.com, etc)

    Es un error que venía arrastrando desde la época en que hacía websites para Uruguay en donde no entraban más de 3 personas.

    La consecuencia de esto, es que tuve que desactivar el sistema de envíos de mensajes a los usuarios registrados, dado que el servidor se estaba llenando de e-mails rebotados.

    Por lo tanto, tengo un website que me anda a medias y no puedo hacer que el otro 50% vuelva a funcionar.

    Se me ocurrió purgar esta base de datos, e implementar un simple sistema de validación por (recibo de respuesta a email de registro)

    Pero antes de eso, necesito averiguar cuales de esos 1.000 usuarios tienen bien la dirección de e-mail en su registro. Además, no puedo dedicarme 4 días a estar mandando un e-mail a cada uno de estos!


    Por eso mi pregunta es: ¿Alguien conoce, algún script en PHP o librería que se pueda utilizar para validar estas direcciones desde un servidor casero.?

    Ósea, me creo un PHP en mi máquina que lea la base de datos y consulte (mediante el script en cuestion) si la dir de email es válida. Se me ocurrió algo que interrogue al servidor de correo del destinatario y que responda si la cuenta es válida, o esta llena, etc.

    Por otro lado me imagino que este supuesto script sería un plato muy tentador para algún SPAMER, por consiguiente pienso que los servidores deben de tener sistemas para evitar este tipo de "consultas"..

    Alguna pista?
    gracias!

  2. #2
    Leonardo Invitado

    Predeterminado

    Interesante pregunta
    Nunca usé un script ya "fabricado" que haga esto, pero debe haber alguno por ahí

    Técnicamente la cosa sería así:
    Validar los registros en la BD para ver si el formato de correo es válido
    Luego de validados los correos, se pueden usar las funciones de socket para obtener las respuestas de los servidores SMTP. Normalmente las respuestas son devueltas en código tipo 550: unavailable box en caso de que la casilla no exista. Acá podés ver las respuestas del protocolo http://www.septeto.com/documentos/smtp.html
    Mezclando un poco esos conceptos se puede llegar a saber si la casilla existe

    La teoría toda muy linda, pero por temas de seguridad no todos los servidores SMTP van aceptar tu conexión si no es desde otro SMTP "limpio" y Hotmail con sus registros SPF es un mundo aparte

    Salud!

  3. #3
    nicolas2 está desconectado Registrado
    Rango: Google es mi amigo

    User Info Menu

    Predeterminado

    gracias Leonardo por tu respuesta!

    Si el formato del email ya lo valido cuando el usuario se registra, el tema es que a veces se equivocan y ponen cosas como juan@gnail.com pepe@hotail.com o mismo se equivocan en su propio nombre de usuario. Algo que con una simple validación cuando se registran, ya queda resuelto.

    Investigaré la web que me pasas, pero me parece que la solución es armarme de paciencia y comenzar a mandar uno por uno e-mails a los registrados en la BD.

    saludos

  4. #4
    Avatar de TaLu
    TaLu está desconectado Registrado
    Rango: Soy accionista de Google!!

    User Info Menu

    Predeterminado

    Hola Nicolas:

    Primero tenés que validar todo lo posible en el form, en un tu caso pasar la db por un bucle que vaya validando y depurando.

    Yo me hice uno bien boludo para ese tema de las direcciones de hotmail/gmail:

    Código:
    // Errores comunes en emails
    
    	$archivo = 'emails.db';
    	$lineas = file($archivo);
    
    	$i=0; while($lineas[$i]) {
    
    	$val = explode ("|", $lineas[$i]);
    
    	$emilio = explode ("@", $emailc);
     
    	if ($emilio[1] == $val[0]) { $emailc = "$emilio[0]@$val[1]"; }
    
        $i++; }
    Y la db que tengo ahora es así:

    Código:
    gimail.com|gmail.com
    gmeil.com|gmail.com
    jmail.com|gmail.com
    jotmail.com|hotmail.com
    hotamil.com|hotmail.com
    hotmailo.com|hotmail.com
    hotmaila.com|hotmail.com
    hotmail.con|hotmail.com
    hotnail.com|hotmail.com
    hotmil.com|hotmail.com
    hotmeil.com|hotmail.com
    hotmai.com|hotmail.com
    hotmal.com|hotmail.com
    htmail.com|hotmail.com
    hgotmail.com|hotmail.com
    hotmai.com|hotmail.com
    hayoo.com|yahoo.com
    yajoo.com|yahoo.com
    yaju.com|yahoo.com
    yajoo.com|yahoo.com
    Luego lo importante es verificar la dirección, por ejemplo mandando un correo de confirmación con una url para validar o con una imagen de 1x1 que llame a un script de validación automática cuando lo abren (tipo de bienvenida), eso es mejor que validar con cualquier script, sabes que las personas son las dueñas de ese correo.

    Aca tenés una función para validar correos tmb:

    Código:
    		function is_email_valid($email) { 
    		if(eregi("^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,3}$", $email)) return TRUE; 
    		else return FALSE; 
    		}
    Y así más o menos más la validación básica de que no quede vacio, etc ya te queda una buena db limpia.

    Saludos.

  5. #5
    elQuique Invitado

    Predeterminado

    Lo que te comentan es para validar la estructura, y es lo mas común y esta super, ahora lo de la bestialidad de escribir hotail o gmil ahí ya con eso no podes porque validan que este correcta la estructura del email no si existe o no el dominio.

    A lo que ya te comentan podes agregarle otra validación extra basada en:

    gethostbyname = Obtener la dirección IP correspondiente a un nombre de host de Internet dado
    http://php.net/gethostbyname

    o
    checkdnsrr = Chequea registros DNS correspondientes a un nombre de host o dirección IP de Internet dado
    http://php.net/checkdnsrr

    de forma que con esos podes verificar si existe un dominio registrado, ojo, esto no quiere decir que si alguien registro hotmil.com saldrá como valido, pero seguramente el user no exista , pero combinando podes descartar unos cuantos

    combinando ambas cosas queda algo así:
    Código:
    function is_email_valid($email){
    	   $exp = "^[a-z0-9\._-]+@+[a-z0-9\._-]+\.+[a-z]{2,3}$";
    	   if (eregi($exp,$email)) {
    			if(checkdnsrr(array_pop(explode("@",$email)),"MX")) {
    				return true;
    			} else {
    				return false;
    			}
    		} else {
    			return false;
    		}
    	}
    pd: estas dos funciones no siempre están disponible en todos los servers.

  6. #6
    elQuique Invitado

    Predeterminado

    sorry me dio hipo :P

  7. #7
    animal está desconectado Registrado
    Rango: Google es mi amigo

    User Info Menu

    Predeterminado

    Pequeño detalle:

    Si estas trabajando con PHP5 no necesitas validar emails con expresiones regulares , simplemente podes hacerlo con la función filter_var

    Ej:

    (String email) filter_var('pepe@pepe.com',FILTER_VALIDATE_EMAIL);
    (false) filter_var('pepe@pepe',FILTER_VALIDATE_EMAIL);

  8. #8
    nicolas2 está desconectado Registrado
    Rango: Google es mi amigo

    User Info Menu

    Predeterminado

    Cita Iniciado por animal Ver Mensaje
    Pequeño detalle:

    Si estas trabajando con PHP5 no necesitas validar emails con expresiones regulares , simplemente podes hacerlo con la función filter_var

    Ej:

    (String email) filter_var('pepe@pepe.com',FILTER_VALIDATE_EMAIL);
    (false) filter_var('pepe@pepe',FILTER_VALIDATE_EMAIL);
    mmmm interesante, buen dato!

Temas Similares

  1. Necesito un script PHP para imagenes
    Por nicolas2 en el foro Diseño Web
    Respuestas: 2
    Último Mensaje: 24/05/2012, 22:01
  2. Necesito mandar 15K de e-mails x dia
    Por animal en el foro Hosting Barato Wordpress
    Respuestas: 7
    Último Mensaje: 21/07/2011, 12:33
  3. Soft o Script para manejar una lista de mails?
    Por Warlock en el foro Webmasters Porno
    Respuestas: 3
    Último Mensaje: 08/07/2009, 19:45
  4. Necesito un Script en PHP para FOTO DEL DIA
    Por Warlock77 en el foro General SoyWebmaster
    Respuestas: 4
    Último Mensaje: 26/08/2003, 16:24
  5. Necesito Script PHP para un TGP
    Por Warlock77 en el foro General SoyWebmaster
    Respuestas: 3
    Último Mensaje: 19/08/2003, 19:49

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •  
Has visto el post " Necesito un script PHP para validar e-mails!" que está en esta URL y ha sido creado por el usuario nicolas2. Esperamos que te haya sido de utilidad el artículo " Necesito un script PHP para validar e-mails!" que inició el usuario nicolas2 de Soywebmaster.com.

Otros Foros de Interés

Curso SEO - Foro SEO - Foro Programacion - Foro Diseño Web - Intercambio de Enlaces - Negocios por Internet - Como Ganar Dinero - Foro Hosting - Foro Apuestas Deportivas

ÚLTIMOS ARTÍCULOS DEL BLOG SEO DE DAVID AYALA

Enlaces UGC, Sponsored y Nofollow [QUE NO TE ENGAÑEN]
Cómo y cuando usar Disavow Tool de Google
Cómo y donde comprar enlaces
El Curso de SEO Local que estabas esperando
Usamos cookies que analizan hábitos de comportamiento y navegación que aceptas al navegar aquí. Política de privacidad | Cookies | Aviso legal