Cómo crear en php un verificador de varios emails básico?

Iniciado por gh1E, 8 Julio 2016, 17:44 PM

0 Miembros y 1 Visitante están viendo este tema.

gh1E

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  ::)
Si no lo sabes...averigua...
SEr o nO SeR ...( y eso a quien le importa???)

gAb1

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 (php) [Seleccionar]
$emails = trim($_POST['emails']);
$array = explode(PHP_EOL, $emails);
$validated = [];
foreach ($array as $email) {
   $validated[] = filter_var($email, FILTER_VALIDATE_EMAIL);
}


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

Código (php) [Seleccionar]
$emails = array_unique($validated);

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

Código (html5) [Seleccionar]
<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 (php) [Seleccionar]
$array = explode(', ', $_POST['emails']);

gh1E


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
<html>
<form action="validatemail.php" method="post">
<textarea name="emails"></textarea>
<input type="submit" value="Comprobar" />
</form>
</html


validatemail.php
<?php
     $emails 
trim($_POST['emails']);
    
$array explode(PHP_EOL$emails);
    
$validated = [];
    foreach (
$array as $emails) {
       
$validated[] = filter_var($emailsFILTER_VALIDATE_EMAIL);
    }
    
?>


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

Salu2.
Si no lo sabes...averigua...
SEr o nO SeR ...( y eso a quien le importa???)

gAb1

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 (php) [Seleccionar]
$emails     = trim($_POST['emails']);
$array      = explode(PHP_EOL, $emails);
$validated  = $invalid = [];

foreach ($array as $email) {

   // si el email es válido se añade al array validated
   if ( filter_var($email, FILTER_VALIDATE_EMAIL) ) {

       $validated[] = $email;

   }

   // si no, se añade al array invalid
   else {

       $invalid[] = $email;

   }
}

// se eliminan los duplicados
$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).