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 ::)
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:
$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():
$emails = array_unique($validated);
Los emails tendrían que ser introducidos uno por línea, en un textarea llamada emails:
<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:
$array = explode(', ', $_POST['emails']);
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($emails, FILTER_VALIDATE_EMAIL);
}
?>
Lo siento por la falta de conocimiento en este tema, muchas gracias como siempre a su ayuda desinteresada.
Salu2.
Por supuesto, para esto usaremos un if que compruebe si el email es correcto, y si no lo es lo agregaremos a otro array:
$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).