Ciao a tutti,
se vi siete stufati di ricevere spamming negli indirizzi e-mail che pubblicate nelle vostre pagine forse potete trovare utile questa soluzione.
L'indirizzo e-mail viene criptato con PHP e decriptato con Javascript on-the-fly
codice:
class MailEncoder
{
function MailEncoder($baseString)
{
$this->baseStr = $baseString ;
//separo la stringa in un array di caratteri
$arrayChars = preg_split('//', $baseString, -1, PREG_SPLIT_NO_EMPTY);
//ordino l'array in modo casuale
mt_srand((float)microtime() * 1000000);
shuffle($arrayChars) ;
//ricreo la stringa
$this->encodedStr = implode('', $arrayChars) ;
}
function encode($mailAddr)
{
//"cripta" l'indirizzo
$len = strlen($mailAddr) ;
$crypted = '' ;
for($i=0; $i<$len; $i++)
{
$crypted.= $this->encodedStr{strpos($this->baseStr, $mailAddr{$i})} ;
}
return($crypted) ;
}
function jsCode()
{
//il codice JS da inserire nell'head della pagina
$jsStr = "var CONFIGkeyStr = '0123456789:@.-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' ; \n
var ENCODEDStr = '{$this->encodedStr}' ; \n
function mailDecode(encodedMail)
{
var decoded = '' ;
for(var i=0; i<encodedMail.length; i++)
{
decoded += CONFIGkeyStr.charAt(ENCODEDStr.indexOf(encodedMail.charAt(i))) ;
}
return(decoded);
} \n
function sendMail(encoded)
{
document.location.href='mailto:'+mailDecode(encoded) ;
} \n
function viewMail(encoded)
{
return('Scrivi a ' + mailDecode(encoded)) ;
}
" ;
return($jsStr) ;
}
function jsLink($email, $text, $cssClass='')
{
//Genera il link con il mailto
$encoded = $this->encode($email) ;
$link = '<a href="javascript:void(0)" class="'.$cssClass.'"' .
' onClick="sendMail(\''.$encoded.'\')" onMouseOver="this.title=viewMail(\''.$encoded.'\')" title=\'\'">' .
$text.'</a>';
return($link) ;
}
}
?>
Esempio
codice:
<?php
include('MailEncoder.php') ;
$CONFIGkeyStr = '0123456789:@.-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
$antispam = new MailEncoder($CONFIGkeyStr) ;
?>
<html>
<head>
<script>
<?php echo($antispam->jsCode()) ;?>
</script>
</head>
<body>
<?php echo $antispam->jsLink('tuo_indirizzo@host.it','cliccami','pippoCss') ?>
</body>
</html>
Lo potete vedere operativo (in realtà in quel caso l'ho fatto po' diverso perchè freephp non utilizza PHP) negli articoli di freephp.html.it
Fino a quando, spero mai, gli spider che cacciano indirizzi sul WEB non integreranno un motore Javascript, con questo sistema siamo al sicuro.