Posez votre question Signaler

[PHP] création d'un anti-bot

okuni 1151Messages postés 4 septembre 2008Date d'inscription 18 mars 2012Dernière intervention - Dernière réponse le 29 oct. 2008 à 08:28
Bonjour,
J'aimerais savoir comment peut-on créer un script anti-robot pour un formulaire d'inscription.
merci :)
Lire la suite 

[PHP] création d'un anti-bot »

10 réponses
Réponse
+1
moins plus
pourrais tu etre plus precis de quels robots souhaites tu te proteger ?
Ajouter un commentaire
Réponse
+0
moins plus
Des robot de pub.
je pense qu'il faudrait un système ou en introduit un code aléatoire qui s'affiche a l'écran.
Alain_42- 27 oct. 2008 à 22:52
recherches du côté des captcha
Ajouter un commentaire
Réponse
+0
moins plus
merci beacoup, j'ai trouvé rapidement en cherchant captcha sur google :)
malheureusement j'ai un message d'erreur qui me dit :
Cannot instantiate non-existent class: captcha
Je suppose que c'est parce que mon hébergeur n'a pas PHP5? (c'est Free)
Alain_42- 28 oct. 2008 à 09:44
non c'est que tu as pris un script qui utilises une class

il doit falloir mettre un include ("class...... ") au début de ton script regardes bien

@lain
Ajouter un commentaire
Réponse
+0
moins plus
J'ai entendu parler des class mais je ne sais pas du tout ce que c'est.
voici le code en entier que j'ai trouvé dans le tuto.
Je ne vois pas l'utilité de l'include_once
<?php 

include_once 'captcha.class.php';

// image PNG
$I = new captcha('JPEG');

// on génère une chaine aléatoire de 10 caractères
$I->setStringLenght(10);

// police Tuffy de taille 15
$I->setFont('fonts/Tuffy.ttf' , 15);

// génération de l image
$I->getImage();

// on met la chaîne générée en session pour le contrôle
$_SESSION['captcha-control'] = $I->getRandString();
?> 
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour.

Si tu as du mal à mettre en place les captchas, tu peux te tourner vers une solution artisanale plus simple (et pas forcément moins efficace).
Exemple de test simple :
$chiffres = Array ('zéro', 'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit', 'neuf');
$operations = Array ('plus', 'moins', 'fois');
$nbs = array_rand($chiffres, 2);
$op = array_rand($operations);
$chaine = $chiffres[$nbs[0]].' '.$operations[$op].' '.$chiffres[$nbs[1]].' = ?';
switch ($op) {
	case 0 : $reponse = $nbs[0] + $nbs[1]; break;
	case 1 : $reponse = $nbs[0] - $nbs[1]; break;
	case 2 : $reponse = $nbs[0] * $nbs[1]; break;
}
echo $chaine.'<br />'.$reponse;

La difficulté étant d'envoyer et comparer la réponse avec la réponse attendue.
Tu peux, par exemple, faire un champ caché qui contient le md5 de la réponse attendue , et le comparer avec le md5 du nombre envoyé...
okuni- 28 oct. 2008 à 15:53
Ok merci, je vais essayer ceci.
Alain_42- 28 oct. 2008 à 23:14
Bonsoir,

include_once ('captcha.class.php');

veut dire que le fichier captcha.class.php va être copiér au début de ton fichier et ce qu'il contient pourra être utilisé par ton script
Et c'est indispensable car les instructions font appel à cette class

est ce que tu as uploadé justement le fichier captcha.class.php sur ton serveur et dans le même répertoire que ton script ?

@lain
okuni- 29 oct. 2008 à 08:28
en fait, je croyais que le fichier captcha.class.php était le fichier contenant le script que j'ai placé.
dans le tuto, il n'expliquais absolument pas ce qu'était cette include :s
Ajouter un commentaire
Ce document intitulé « [PHP] création d'un anti-bot » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?