Fonction antispam
Publi� le 15 décembre 2006

Voici une fonction antispam assez efficace pour protéger les emails présents dans les pages web contre d'éventuelles attaques par des robots spammeurs. Même si cette fonction n'est pas une solution 100% sécurisée, elle a au moins le mérite de conserver la fonctionnalité de la balise <a href="mailto:"> qui suite au clic d'un utilisateur ouvre le logiciel client d'envoi de courriel.


function encString ($orgStr) {
    
$encStr = "";
    
$nowStr = "";
    
$rndNum = -1;

    
$orgLen = strlen($orgStr);
    for (
$i = 0; $i < $orgLen; $i++) {
        
$encMod = rand(1,2);
        switch (
$encMod) {
        case
1: // Decimal
            
$nowStr = "&#" . ord($orgStr[$i]) . ";";
            break;
        case
2: // Hexadecimal
            
$nowStr = "&#x" . dechex(ord($orgStr[$i])) . ";";
            break;
        }
        
$encStr .= $nowStr;
    }
    return
$encStr;
}

Pour utiliser cette fonction, il faut juste passer une adresse de courriel en paramètre.

Ex :


<?
    echo
htmlentities(encString("balluche1@free.fr"));
    echo
'<a href="mailto:' . encString ("balluche1@free.fr") . '">Mail Balluche</a>';
?>

Résultat :


bal&#x6c;uc&#x68;&#x65;1@&#x66;&#x72;&#x65;e.fr

Mail Balluche

Les caractères sont convertits en entités soit, de manière aléatoire, en format octal ou hexadécimal.