![]()
Torna alla pagina delle funzioni
Questa funzione prende come parametro un indirizzo e-mail e produce un link per inviare la mail, scritto in codice ASCII, in modo che l’utente sia in grado di inviare una mail, ma i sistemi che scansionano le pagine alla ricerca di mail da “rubare” non siano in grado di prelevare l’indirizzo.
function proteggiMail($str){
// Variabile che conterrà la stringa di output (in formato HTML entità numeriche)
$r = '';
// Aggiungo il prefisso mailto per renderla un vero link di email
$str = 'mailto:' . $str;
// Scorro ogni carattere della stringa, dalla posizione 0 fino alla fine
for($i = 0; $i < strlen($str); $i++){
// Estraggo il singolo carattere in posizione $i
$char = substr($str, $i, 1);
// Ottengo il valore ASCII/Unicode del carattere corrente con ord()
// Quindi trasformo quel numero in una entità HTML numerica
$r .= '&#' . ord($char) . ';';
}
// Restituisco la stringa con tutti i caratteri convertiti in entità numeriche
return $r;
}
Spiegazione
Questa funzione protegge visivamente un indirizzo email da semplici robot/spider di raccolta:
- Trasforma ogni carattere (inclusi spazi, lettere e
@) nella corrispondente entità numerica HTML (&#...;). - Il risultato, quando inserito in una pagina HTML, viene visualizzato correttamente come
mailto:indirizzo@example.com, ma in realtà nel codice sorgente compare solo una sequenza di entità numeriche. - Questo rende più difficile per alcune trivellatrici di email la lettura del vero indirizzo dal sorgente, senza usare JavaScript o altri metodi più complessi.
Esempio
proteggiMail("info@webtocom.com");
Genera qualcosa come:
mailto:info@webtocom.com
Quando visualizzato in pagina, il browser lo mostra come un link mailto: normale, ma per un semplice scraper di testo appare come una sequenza di codici.