Le captcha pour les geek
Par dgezeo, samedi 19 novembre 2005 à 13:45 | Dgezeo | #120 | rss
Le captcha, c'est le code qu'il faut saisir pour protèger vos commentaires des vilains bots de spam. Dash en a écrit un très fiable pour DotClear, et facile à installer.
Pour l'installer :
Rendez-vous ensuite sur votre blog, dans le back-office. Rubrique Outils, puis dans le Gestionnaire des plugins.
Dans le champ de saisi, indiquez l'URL de l'installeur que vous trouvez cette page
Si ça n'a pas bougé, c'est toujours http://www.atelierphp5.com/pub/dotclear/plugin-captcha-1.1.pkg.gz (copiez/collez).
Validez, attendez, et quand c'est fait, activez Anti-Spam pour les commentaires - captcha sur la page Outils / Gestionnaire des plugins de votre blog.
Retournez ensuite sur la page Outils. Vous devriez y trouver un magnifique panneau "sens interdit". Youpi, ça a marché. Sinon, recommencez du début, ou alors, tant pis pour vous.
Attention, ça va se geekifier un peu là.
Sur la page Outils, entrez dans la rubrique Anti-Spam pour les commentaires
Il faut maintenant créer une nouvelle table sur votre base de donnée. Si vous avez PHPMyAdmin pour faire joujou avec votre base, suivez ce qui suit, sinon, débrouillez vous.
Connectez-vous sur votre interface, sélectionnez votre base (normalement, elle est juste sous le logo de PHPMyAdmin avec le nombre de tables qu'elle contient entre parenthèses). Puis cliquez sur l'onglet Requête qui normalement se trouve tout à droite de votre écran si, comme moi, vous avez PHPMyAdmin 2.5.4 (sinon, c'est toujours pareil, débrouillez-vous).
Copiez la requête SQL fournie sur la page du plugin et collez-là dans la zone de saisie qui s'intitule "Requête SQL sur la base (nom de votre base)" en bas à droite de la page sur PHPMyAdmin. Cliquez-ensuite sur "Exécuter la requête". Validez, attendez, et hop.
Modifiez maintenant votre page de saisi des commentaires dans votre thème DotClear en y insérant le bout de code fourni sur la page du plugin.
A ce niveau, tout devrait fonctionner selon les paramètres par défaut du Captcha
Pour changer l'apparence du captcha, modifiez le fichier config.php que vous trouverez par FTP sur votre blog, dans ecrire/tools/captcha
Modifiez la chaîne $GLOBALS['captcha_level'] en mettant 0, 1 ou 2 selon le niveau de sécurité désiré. Ici, on a mis 1 pour avoir les images en PNG, ce qui nous donne $GLOBALS['captcha_level'] = 1;
Cependant, ces images par défaut sont immondes. Et noires sur fond transparent. Dans notre cas, c'était un peu gênant car le fond de notre site est en ce moment pas très lumineux.
Il faut donc passer en mode geek supérieur et se faire des jolis chiffres de 0 à 9, soit 10 images de la taille que l'on veut, les exporter en PNG et les encoder en base64.
Je sens qu'il y en a qui piaffent déjà d'impatience.
Rassurez-vous, l'encodage ne se fait pas à la main. Utilisez plutôt ce petit script qui suit que vous copiez et collez dans un fichier texte brut vide, et enregistrez en .php (en n'oubliant pas de rajouter les balises de déclaration de code PHP en début et fin de fichier) :
/*
ce bout de code m'a généreusement été soufflé par
Dider Brun http://www.foxaweb.com/
alors que je lui avait juste demandé s'il connaissait un soft
qui faisait ça tout seul.
Il est sympa ce Didier.
*/
function encodeImage($source,$dest){
$fp=fopen($source,"rb");
$image="";
while (!feof($fp))$image.=fgetc($fp);
fclose($fp);
$image=base64_encode ($image);
$fp=fopen($dest,"wb");
fwrite($fp,$image);
fclose($fp);
}
// oui, je sais, j'aurai pu faire une boucle, mais j'avais pas envie
encodeImage("0.png","0.txt");
encodeImage("1.png","1.txt");
encodeImage("2.png","2.txt");
encodeImage("3.png","3.txt");
encodeImage("4.png","4.txt");
encodeImage("5.png","5.txt");
encodeImage("6.png","6.txt");
encodeImage("7.png","7.txt");
encodeImage("8.png","8.txt");
encodeImage("9.png","9.txt");
Uploadez tout ça quelque part sur votre serveur web, avec vos images en PNG au même endroit, et appellez votre fichier PHP en saisissant son URL.
Retournez sur votre FTP, et oh surprise, vous avez autant de .txt que de .png, chaque .txt contenant l'image en base64
Toujours dans ecrire/tools/captcha, modifiez functions.php (avec de préférence un éditeur de texte spécialisé pour le code, pas Word par exemple) aux alentours de la ligne 550.
Modifiez les lignes de
0 => ' (ici plein de texte) 'à
9 => ' (ici plein de texte) 'en remplaçant le (plein de texte) par votre (plein de texte) à vous que vous trouvez dans les fichiers .txt générés par le script PHP.
Et hop, normalement, c'est bon, plus aucun bot ne vous collera des commentaires stupides !
Commentaires
1. Le 19/11/05 à 14:58, keffer ( site ) a eu envie de dire :
2. Le 16/04/06 à 01:19, pc ( site ) a eu envie de dire :
3. Le 13/11/06 à 23:56, Rumeur ( site ) a eu envie de dire :
4. Le 07/07/07 à 22:55, tyron a eu envie de dire :
5. Le 13/07/07 à 14:20, holiday cottages ( site ) a eu envie de dire :
6. Le 16/01/08 à 19:43, sOz ( site ) a eu envie de dire :
Si vous avez aussi envie de dire quelque chose, c'est ici :