Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: gh1E en 8 Julio 2016, 17:44 pm



Título: Cómo crear en php un verificador de varios emails básico?
Publicado por: gh1E en 8 Julio 2016, 17:44 pm
Hola amigos  :D;

Por favor agradezco de antemano por el apoyo dándome una guía, es posible crear en php un validador de varios correos?, que no sea tan complejo básicamente que revise si están correctamente escritos, no estén repetidos y que quizá se pueda todos de un solo paso mediante ingreso de las direcciones en un cuadro de texto o importando un csv.

Nuevamente muchas gracias.

Salu2 a to2  ::)


Título: Re: Cómo crear en php un verificador de varios emails básico?
Publicado por: gAb1 en 9 Julio 2016, 18:37 pm
PHP tiene funciones para comprobar este tipo de cosas, hechale un vistazo a la función filter_var() con el flag FILTER_VALIDATE_EMAIL para comprobar que sea válido:

Código
  1. $emails = trim($_POST['emails']);
  2. $array = explode(PHP_EOL, $emails);
  3. $validated = [];
  4. foreach ($array as $email) {
  5.    $validated[] = filter_var($email, FILTER_VALIDATE_EMAIL);
  6. }

Ahora, para quitar los duplicados se usa la función array_unique():

Código
  1. $emails = array_unique($validated);

Los emails tendrían que ser introducidos uno por línea, en un textarea llamada emails:

Código
  1. <textarea name="emails"></textarea>

Si quieres cambiar esto, por ejemplo separados por una coma y un espacio, simplemente cambias la segunda linea del script para que busque una coma y un espacio en lugar de una nueva linea:

Código
  1. $array = explode(', ', $_POST['emails']);


Título: Re: Cómo crear en php un verificador de varios emails básico?
Publicado por: gh1E en 1 Agosto 2016, 18:56 pm

Hola;

Muchas gracias gAb1 por tu ayuda, de verdad muy claro y directo, me dejó un poco más clara la idea.

Si no es molestar tengo algo creo no me está funcionando muy bien, hay manera que me muestre lo correos ingresados erróneamente en otra página generada o mejor aún en un archivo excel?

Tengo hasta ahora códigos simples en 2 archivos.

emails.html
Código:
<html>
<form action="validatemail.php" method="post">
<textarea name="emails"></textarea>
<input type="submit" value="Comprobar" />
</form>
</html

validatemail.php
Código:
 <?php
     $emails = trim($_POST['emails']);
    $array = explode(PHP_EOL, $emails);
    $validated = [];
    foreach ($array as $emails) {
       $validated[] = filter_var($emails, FILTER_VALIDATE_EMAIL);
    }
    ?>

Lo siento por la falta de conocimiento en este tema, muchas gracias como siempre a su ayuda desinteresada.

Salu2.


Título: Re: Cómo crear en php un verificador de varios emails básico?
Publicado por: gAb1 en 3 Agosto 2016, 04:56 am
Por supuesto, para esto usaremos un if que compruebe si el email es correcto, y si no lo es lo agregaremos a otro array:

Código
  1. $emails     = trim($_POST['emails']);
  2. $array      = explode(PHP_EOL, $emails);
  3. $validated  = $invalid = [];
  4.  
  5. foreach ($array as $email) {
  6.  
  7.    // si el email es válido se añade al array validated
  8.    if ( filter_var($email, FILTER_VALIDATE_EMAIL) ) {
  9.  
  10.        $validated[] = $email;
  11.  
  12.    }
  13.  
  14.    // si no, se añade al array invalid
  15.    else {
  16.  
  17.        $invalid[] = $email;
  18.  
  19.    }
  20. }
  21.  
  22. // se eliminan los duplicados
  23. $emails = array_unique($validated);

Ahora para mostrar los resultados, lo que se hace hoy en dia es usar ajax para automaticamente, sin recargar la página, mostrar los válidos y los no válidos. Esto es realmente sencillo usando jQuery, busca aquí en el foro que tienes muchos ejemplos, o en la documentación: https://api.jquery.com/jquery.post/ Simplemente usando la función $.post (para enviar los emails) y uno de sus callbacks .done() (para actualizar el DOM con el resultado).