Validare email in Javascript e PHP

Venerdì 22 Settembre, 2006

Per chi sviluppa moduli e FORM di contatti, esiste la necessità di verificare l'immisione di un indirizzo di posta elettronica. Oggi più che mai, con demoni pronti ad eseguire SPAM ovunque, è bene tutelarsi da "furbetti" pronti a sfruttare i moduli HTML per inviare mail illegali o eseguire hack per SPAM e quant'altro.

La prima tutela può arrivare da Javascript, verificando - ad esempio - il campo email di un FORM prima di procedere con l'invio. Diciamo sin da subito che questo risulta un mero pagliativo, relativamente a sistemi di SPAM (o hacker) evoluti. Tuttavia è sempre meglio inserire qualche semplice controllo - preliminare - quantomeno per evitare distrazioni da parte dell'utente - corretto.

Prima di tutto un consiglio semplice: se chiedete il nome, oltre la mail, limitate la lunghezza in caratteri e controllate che al suo interno non sia presente il carattere AT (@). Questo viene spesso usato per inviare - anche in bcc - mail indesiderate. Un esempio eclatante è l'uso della funzione mail() sotto PHP. Il primo parametro di questo funzione è l'indirizzo del destinatario, nella forma semplice:

PHP:
  1. mail("info@e-lementi.com",...);

oppure nella forma estesa

PHP:
  1. mail( $name.' <'.$email.'>', ...) ;

Alcuni sviluppatori usano proprio la forma estesa, inserendo quindi il nome del destinatario chiesto nel FORM, ottenendo una sintassi simile a questa:

PHP:
  1. mail( $name.' <'.$email.'>', ...);

Alcuni furbacchioni, quindi, postano in $name una stringa simile a questa: ind1@dom1.com, ind2@dom2.com, ... Così facendo la funzione mail() si trova costretta ad inviare posta a tutti quegli indirizzi, causando non pochi problemi (vedi code sul server). Morale, il nome NON deve essere un indirizzo di posta elettronica!

Verificare invece la correttezza di una email è piuttosto facile, quantomeno a livello sintattico:

JavaScript:
  1. var r = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
  2. if( r.test( email ) )
  3.     alert("e-mail corretta!");
  4. else
  5.     alert("e-mail NON corretta!");

Si possono poi aggiungere tutta una serie di controlli aggiuntivi personalizzati come: liste di esclusione o inclusione di domini, liste di esclusioni di username, ecc...

Un controllo estremamente più efficace, invece, può essere effettuato da PHP. Oltre a svolgere un controllo sintattico, utilizzando sempre le regular expression, si può sfruttare la funzione checkdnsrr() per eseguire un controllo sui records DNS e verificare, quindi, se il dominio indicato esista davvero!

Questo tipo di controllo - ovviamente - non fornisce una certezza del 100% sull'autenticità della mail, ma quantomeno screma tutta una serie di domini impossibili utilizzati esclusivamente allo scopo di intasare la - nostra - rete!

Insomma, con un controllo Javascript più uno PHP e un po' di attenzione, possiamo almeno limitare i danni provocati dai simpaticoni che potrebbero codificare ben altro - qualcosina di più sottile e divertente - invece dei soliti SPAM (che ormai, diciamolo pure, hanno stancato e risultano davvero obsoleti).

Post correlati

2 commenti a: “Validare email in Javascript e PHP”

  1. getAvatar 1.0 Venerdì 09 Maggio, 2008 alle 09:12
    Classi Javascript e PHP per validare un’indirizzo di posta elettronica | Undolog.com ha detto:

    [...] il post Validare email in Javascript e PHP, ecco una simpatica classe Javascript in grado di verificare e controllare indirizzi di posta [...]

  2. getAvatar 1.0 Venerdì 24 Ottobre, 2008 alle 13:21
    Wordpress: come creare passo passo un proprio login | Undolog.com ha detto:

    [...] Eseguire una serie di controlli sui campi email e password (vedi anche Validare email in Javascript e PHP) [...]

Lascia un commento

TAG XHTML permessi: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Usa <pre> per racchiudere codice