Verifica di un indirizzo email

MarcoGrazia

Utente Attivo
15 Dic 2009
793
16
18
59
Udine
www.stilisticamente.com
Allora, navigando a naso tra gli snippet presenti sul sito di Mr.Webmaster mi sono imbattuto in una semplice funzione che dovrebbe ( il condizionale è d'obbligo perché per ora non posso provarla ) verificare l'esistenza di un indirizzo email, basandosi sulla funzione PHP checkdnsrr() e ho voluto svilupparla ulteriormente per migliorare il supporto di verifica dell'indirizzo che è carente.
Origine: https://www.mrw.it/php/verificare-se-indirizzo-email-esiste_11259.html
Tralasciando le migliaia di script REGEX esistenti, ho usato solo i filtri del PHP, così se non è verificato un determinato indirizzo è solo colpa di Zeev Suraski e Andi Gutmans :D
Ecco lo script commentato, almeno in parte:
PHP:
/**
 *    Verifica un indirizzo email
*/
function verificaEmail( $valore ) {
    $sanitized = filter_var( $valore, FILTER_SANITIZE_EMAIL );
    if ( filter_var( $sanitized, FILTER_VALIDATE_EMAIL )) {
        return $sanitized;
    }
return false;
}    //    verificaEmail()

/**
    *    Verifica l'esistenza di un indirizzo email
    *    uso:
    *    if (!emailExist('[email protected]')) echo 'Email inesistente';
    *    else echo 'Email valida';
*/
function emailExist( $email ) {
    $email = verificaEmail( $email );
    if ( $email )
        if ( !checkdnsrr( array_pop( explode( '@', $email )), 'MX' )) return false;
return $email;
}    emailExist()

Come funziona:
intanto ho diviso l'unica funzione dello snippet iniziale in due funzioni distinte, così facendo è anche possibile utilizzare solo una o l'altra a seconda di cosa abbiamo bisogno.
Quindi parlo ora della prima, la verificaEmail()
PHP:
function verificaEmail( $valore ) {
    $sanitized = filter_var( $valore, FILTER_SANITIZE_EMAIL );
    if ( filter_var( $sanitized, FILTER_VALIDATE_EMAIL )) {
        return $sanitized;
    }
return false;
}    //    verificaEmail()
FILTER_SANITIZE_EMAIL filtra la parte spuria di un indirizzo email, ad esempio: [email protected] è valida e non c'è nulla da fare ([email protected]) è valida ma vanno tolte le parentesi e questo lo fa il filtro restituendo l'indirizzo nel modo corretto.
Se passa il test però non è detto che sia valida, perché avrei potuto scrivere gino AT lemon DOT org e FILTER_VALIDATE_EMAIL darebbe errore, cioè false.
Se uso solo FILTER_VALIDATE_EMAIL come nell'esempio originale, pure passando l'indirizzo corretto ma con le parentesi non passerebbe, ecco perché la sanitizzazione.

Ultima parte:
PHP:
function emailExist( $email ) {
    $email = verificaEmail( $email );
    if ( $email )
        if ( !checkdnsrr( array_pop( explode( '@', $email )), 'MX' )) return false;
return $email;
}    emailExist()
Da notare che fa da se il check sulla correttezza dell'indirizzo, quindi basta richiamare questa, e fa tutto, quindi se $email non è false, controlla se esiste il record MX, se questo esiste torna l'indirizzo email, se no false.

Dato che da dove sono ora non posso verificarla, troppi controlli sul proxy dell'ufficio, se qualcuno vuole divertirsi a controllarla e dire qui se funziona o proporre modifiche è il benvenuto.
 
Discussioni simili
Autore Titolo Forum Risposte Data
MarcoGrazia Verifica di una stringa o di un nome proveniente da form Snippet PHP 0
D verifica codice fiscale persona fisica /aziendale stesso campo HTML e CSS 1
F [PHP] Verifica utente presente nel DB PHP 13
gandalf1959 [PHP] Verifica password per accesso ad area riservata PHP 3
M [Javascript] Verifica calcolo prima di fare insert Javascript 13
Samuele Ronzani [PHP] Verifica se un dato esiste già PHP 1
S [Javascript] Verifica separatore decimale sistema operativo Javascript 2
felino EXCEL: verifica dati mancanti tra due sheet Windows e Software 2
A Verifica validità data in Java Java 2
kikki882 verifica account - dati personali Social Media Marketing 0
S [PHP] Verifica dati tramite form e annullamento codice inserito PHP 7
L Wordpress: consiglio plugin per "verifica disponibilità" WordPress 0
MarcoGrazia [PHP] Verifica dell'input utente tramite funzione generica. PHP 0
francesco87 [Vendo] Verifica pagina (bollino grigio) Annunci servizi di Social Media Marketing 0
M [PHP] Verifica formato data in tempo reale PHP 2
WebDr [Javascript] verifica input Javascript 8
R [WordPress] Accesso al db e verifica credenziali (password criptata) WordPress 1
A VENDO ACCOUNT DI DIVERSE PIATTAFORME E VERIFICA FACEBOOK ACCOUNT(PHOTO TAG VERIFICATION,VERIFICA TEL Annunci servizi di Social Media Marketing 2
P verifica caratteri per email e password PHP 17
S Verifica Esistenza Codice Fiscale PHP 5
C verifica e invio ordine php PHP 19
MarcoGrazia Verifica della data inserita in un form ( utilizzando bootstrap ) Javascript 7
G verifica caricamento foto originali su social network o sito di hosting immagini Discussioni Varie 3
A Strumenti "ufficiali" per la verifica dei Cookie HTML e CSS 2
A verifica di proprietà bing webmaster tool Google Webmaster Tools 0
P Verifica form solo con php senza javascript PHP 15
D Verifica inserimento dati form PHP 12
P verifica utente in db PHP 6
L [MySQL] Verifica disponibilità camera MySQL 32
L vendo account facebook femmina 5.000 amici con verifica cell e tag superati Annunci servizi di Social Media Marketing 0
V verifica form jQuery 5
filippino Verifica email per attribuzione dei contenuti SEO e Posizionamento 0
N Verifica email di registrazione PHP 0
D Verifica plug-in aggiornati di Firefox non vede gli aggiornamenti effettivi Windows e Software 0
il_bauscia Verifica segnale operatore 5ghz Reti LAN e Wireless 2
Virginia86 [risolto] Problema select e verifica form PHP 38
G php asincrono con ajax 2 campi di verifica PHP 1
P Problema ocon verifica campo in javascript Javascript 7
M Cosa ne pensate del mio primo file PHP (verifica disponibilità stanze)? PHP 0
M adsmanager e messaggio di verifica email Joomla 0
L verifica mail in db con jquery e ajax. Aiuto jQuery 9
asevenx modulo registrazione utenti, cicli if di verifica PHP 9
A Espressione Regolare per verifica stringa PHP 14
A verifica codice PHP 7
M Verifica HTTP o HTTPS PHP 1
M Verifica se una Funzione appartiene ad una Classe PHP 9
F Esiste un programma che verifica la home page e la corregge automaticamente? HTML e CSS 7
P problema verifica dati Ajax 58
P Verifica form misto php e JS Javascript 2
A verifica disponibilità dominio Domini 0

Discussioni simili