PHP: proteggere un indirizzo email su internet
This entry was posted on September 9th, 2009 and is filed under php.
L’articolo di oggi non è nuovo su questo blog. In effetti ho già trattato l’argomento tempo fa, quasi un anno fa precisamente. Un utente mi ha fatto però notare che il codice nel precedente articolo è errato e quindi ho preferito riprendere l’argomento ottimizzando un pochino la funzione usata tempo fa.
La scorsa volta ho parlato di come proteggersi dallo spam, oggi invece parlerò di come proteggere un indirizzo email da bot indiscreti su una pagina web. Come ben sappiamo infatti i bot scansionano le pagine web anche alla ricerca di indirizzi email da bombardare di spam e, per quanto i filtri possano essere sempre più avanzati, qualcuna di quelle mail riesce sempre a scamparsela ed entrare nella nostra posta in arrivo.
Una soluzione molto semplice è quella di inserire l’indirizzo sotto forma di immagine o, come fanno in molti, inserire la “@” in formato immagine e inserire le restanti parti dell’indirizzo come testo. Purtroppo però quando inseriamo un link alla mail anche all’interno del tag <a href=”#”> dovremo inserire il link e sicuramente non possiamo inserire un’immagine. Oltretutto in termini di accessibilità un’immagine senza un tag alt corrispondente non è proprio il massimo per cui offriamo il nostro indirizzo ai bot su un piatto d’argento.
Un trucchetto che può risolvere il problema è quello presentato oggi. Altro non fa che trasformare ogni singolo carattere dell’indirizzo email (o di altro in caso di bisogno) nel suo corrispondente ASCII così da passare inosservato alla maggior parte dei bot. La funzione è la seguente:
<?php
function ordtochr($string) {
$nstring = "";
$strlen = strlen($string);
for ($i = 0; $i < $strlen; $i++)
$nstring .= "&#".ord($string[$i]).";";
return $nstring;
}
?>
Come potete notare guardando il sorgente di questa pagina, lo uso da molto e posso garantire che finora in tutti i progetti in cui è stato usato ha garantito il risultato in pieno. Il suo utilizzo è ovviamente molto semplice, il seguente codice è sufficiente per stampare a schermo un link cliccabile con l’indirizzo email:
<a href="mailto:<?php echo ordtochr("pippo@email.com"); ?>">
<?php echo ordtochr("pippo@email.com"); ?>
</a>
Nel sorgente della pagina verrà visualizzato l’indirizzo in questa maniera:
pippo@emai l.com
che, anche se incomprensibile, garantisce un corretto funzionamento nel momento in cui viene cliccato.









