Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

ANTI-SPAM SIMPLE À INSERER MAIS NÉCESSITE BDD


Information sur la source

Catégorie :Formulaires Classé sous : captcha, formulaire, anti spam, anti-spam Niveau : Débutant Date de création : 22/08/2008 Date de mise à jour : 23/08/2008 11:25:29 Vu / téléchargé: 3 662 / 163

Note :
Aucune note

Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Anti-spam, fonctionnant comme un captcha, simple à installer mais nécessitant une base de données.

J'ai créé cet anti-spam, car je n'ai jamais compris comment insérer un captcha à mes formulaires (des fois dans la vie il y a des choses que l'ont ne comprends pas et on y peut rien xD).

Donc je pense que cela peut servir.

Vos avis m'intéressent!! Alors n'hésitez pas.
 

Source

  • // Source: aeroth-design (azumi13)
  • // Decomposition:
  • // 3 fichiers + 1 table sql
  • // 1: configuration d'acces bdd
  • // 2: votre formulaire
  • // 3: validation de votre formulaire ou envoie de votre mail
  • // 4: votre table sql
  • // 1: Fichier config.php
  • <?php
  • $serveur = 'localhost';
  • $login = '';
  • $mdp = '';
  • $base = '';
  • ?>
  • // 2: Votre formulaire, dans les balises <form>
  • <?php
  • include ('config.php');
  • mysql_connect($serveur,$login,$mdp);
  • mysql_select_db($base);
  • $sql = mysql_query('SELECT * FROM captcha ORDER BY rand() LIMIT 1');
  • $data = mysql_fetch_array($sql);
  • echo ''.$data['question'].'';
  • ?>
  • <input type="text" name="reponse" />
  • <input type="hidden" name="id" value="<?php echo $data['id']; ?>" />
  • // 3: Dans votre fichier de validation ou d'envoi de mail
  • <?php
  • include ('config.php');
  • mysql_connect($serveur,$login,$mdp);
  • mysql_select_db($base);
  • $sql2 = "SELECT reponse FROM captcha WHERE id='".$_POST['id']."'";
  • $req2 = mysql_query($sql2) or die('Erreur !<br>'.$sql2.'<br>'.mysql_error());
  • $data2 = mysql_fetch_array($req2);
  • if( $_POST['couleur'] != $data2['reponse'])
  • {
  • echo '<br><br><center><b><p>Mauvaise réponse !!</p></b></center>';
  • include('lien vers votre formulaire');
  • exit;
  • }
  • ?>
  • // 4: Votre table
  • DROP TABLE IF EXISTS `captcha`;
  • CREATE TABLE IF NOT EXISTS `captcha` (
  • `id` int(11) NOT NULL auto_increment,
  • `question` text NOT NULL,
  • `reponse` text NOT NULL,
  • PRIMARY KEY (`id`)
  • ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
  • INSERT INTO `captcha` (`id`, `question`, `reponse`) VALUES
  • (1, 'La neige est de couleur :', 'blanche'),
  • (2, 'Une tomate est de couleur :', 'rouge'),
  • (3, 'Le cotton est de couleur :', 'blanche'),
  • (4, 'La carotte est de couleur :', 'orange'),
  • (5, 'Le citron est de couleur :', 'jaune'),
  • (6, 'Combien fait 2+2 :', '4'),
  • (7, 'Combien fait 10-5 :', '5'),
  • (8, 'Combien fait 1+9', '10'),
  • (9, 'Combien fait 2x4 :', '8'),
  • (10, 'Combien fait 3x4 :', '12');
  • //Possibilité de rajouter autant de question que l'on souhaite
  • //LE ZIP CONTIENT UN EXEMPLE ET TOUT EST COMMENTE POUR MIEUX S'Y RETROUVER.
// Source: aeroth-design (azumi13)
// Decomposition:
// 3 fichiers + 1 table sql
// 1: configuration d'acces bdd
// 2: votre formulaire
// 3: validation de votre formulaire ou envoie de votre mail
// 4: votre table sql


// 1: Fichier config.php

<?php
$serveur = 'localhost'; 
$login = ''; 
$mdp = ''; 
$base = '';
?>


// 2: Votre formulaire, dans les balises <form>

<?php
include ('config.php');
mysql_connect($serveur,$login,$mdp);
mysql_select_db($base);
$sql = mysql_query('SELECT * FROM captcha ORDER BY rand() LIMIT 1');
$data = mysql_fetch_array($sql);
echo ''.$data['question'].'';
?>
<input type="text" name="reponse" />
<input type="hidden" name="id" value="<?php echo $data['id']; ?>" />


// 3: Dans votre fichier de validation ou d'envoi de mail

<?php
include ('config.php');
mysql_connect($serveur,$login,$mdp);
mysql_select_db($base);
$sql2 = "SELECT reponse FROM captcha WHERE id='".$_POST['id']."'";
$req2 = mysql_query($sql2) or die('Erreur !<br>'.$sql2.'<br>'.mysql_error()); 
$data2 = mysql_fetch_array($req2);

if( $_POST['couleur'] != $data2['reponse'])
	{
	echo '<br><br><center><b><p>Mauvaise réponse !!</p></b></center>';
	    include('lien vers votre formulaire'); 
    exit; 
    }
?>

// 4: Votre table 


DROP TABLE IF EXISTS `captcha`;
CREATE TABLE IF NOT EXISTS `captcha` (
  `id` int(11) NOT NULL auto_increment,
  `question` text NOT NULL,
  `reponse` text NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

INSERT INTO `captcha` (`id`, `question`, `reponse`) VALUES
(1, 'La neige est de couleur :', 'blanche'),
(2, 'Une tomate est de couleur :', 'rouge'),
(3, 'Le cotton est de couleur :', 'blanche'),
(4, 'La carotte est de couleur :', 'orange'),
(5, 'Le citron est de couleur :', 'jaune'),
(6, 'Combien fait 2+2 :', '4'),
(7, 'Combien fait 10-5 :', '5'),
(8, 'Combien fait 1+9', '10'),
(9, 'Combien fait 2x4 :', '8'),
(10, 'Combien fait 3x4 :', '12');
//Possibilité de rajouter autant de question que l'on souhaite

//LE ZIP CONTIENT UN EXEMPLE ET TOUT EST COMMENTE POUR MIEUX S'Y RETROUVER.

Conclusion

c'est une sécurité simple contre le spam.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

22 août 2008 06:05:29 :
ajout d'un commentaire =)
23 août 2008 11:25:29 :
Correction ajout de la variable $base au fichier config.php et ajout de conexion bdd au fichier de validation

Commentaires et avis

signaler à un administrateur
Commentaire de coucou747 le 22/08/2008 06:59:12

while (list($key, $val) = each($HTTP_POST_VARS)) {

tu peux faire un foreach($_POST as $key => $val), comme ca, ton code ne sera plus deprecie depuis php4.

a part ca, ton captcha a un gros defaut : il ne genere aucun couple question/reponse automatiquement, c'est donc pas un test de turing (puisque : c'est pas automatique, c'est un humain qui pose les questions... indirectement, certe, mais ca reste un humain)...

ce n'est donc pas un captcha, et cette securite est donc peu convenable (suffit que le hacker passe autant de temps que toi a coder son bot, et il peut concevoir une attaque.)


bref, tu peux eviter le spam, mais pas le flood.

signaler à un administrateur
Commentaire de Optitech le 22/08/2008 18:50:52

Moi ce qu'il faut m'expliquer c'est ca : echo ''.$data['question'].''; ! echo $data_['question'] ne suffit pas tout simplement ???

Sinon il y a une erreur dans ta source la variable $base n'est pas défini. Aïe...

Pour améliorer ton idée tu pourias crée un sytème qui pose de questions du genre "combien font 1+1 ?" mais que la question sois crée de façon aléatoire. Tu en enpse quoi coucou747 ? C'est une idée que je viens d'avoir mais je ne sais pas si c'est viable pour du sytème anti-span.

signaler à un administrateur
Commentaire de stailer le 23/08/2008 11:10:59

Pour reprendre l'exemple dans ton screenshot : Le citron peut être vert ;)

L'antispam par question est une bonne idée, mais il faut choisir les questions avec beaucoup de précaution, ce qui est pénible et les renouveler de temps à autres, et de manières automatiques c'est pas possible, dû justement à cette pertinence à avoir.

signaler à un administrateur
Commentaire de coucou747 le 23/08/2008 15:21:33

stailer, si c'est pas automatique, alors ca sert a rien.

signaler à un administrateur
Commentaire de durealex le 26/08/2008 11:39:38

Il faut posé des question du genre, Quel est la couleur du cheval blanc de herni IV ? :)
Sinon le mieux pour les questions seraient que tu puisse en rajouté via un xml ou autre.

signaler à un administrateur
Commentaire de Palleas_44 le 26/08/2008 20:25:24

Ou un truc
<?php
$nb1 = mt_rand(0,10);
$nb2 = mt_rand(0,10);
$result = $nb1+$nb2;
echo 'Quel est le résultat de ', $nb1,' plus ', $nb2, ' ?';
?>

Après j'ai fais ça à l'arache, tu peux faire un tri aléatoire sur le site, faire en sorte que les chiffres s'affichent en lettres, etc etc...

signaler à un administrateur
Commentaire de azumi13 le 27/08/2008 20:23:40

ce n'est pas une mauvaise idée!

merci pour vos critique cela m'aide à améliorer mon systeme pour mon site.

signaler à un administrateur
Commentaire de jdalton42 le 29/08/2008 13:06:44

salut,

pour le captcha, il n'y a rien de compliqué ..

tu génère un code aléatoire que tu stock dans une variable session.

ensuite, tu génère une image avec le code écrit dans cette image.

il suffit que la personne tape ce code, dans la page de vérification tu le récupère dans la variable session et tu mes compares .. rien de bien difficile ..

signaler à un administrateur
Commentaire de jdalton42 le 29/08/2008 13:07:56

tu LES compares.

sorry pour la faute de frappe.

signaler à un administrateur
Commentaire de coucou747 le 29/08/2008 13:09:53

generer une bonne image, c'est hyper dur.

signaler à un administrateur
Commentaire de jdalton42 le 11/09/2008 18:51:38

c'est pour sa que phpcs est il y a de très bonnes sources de génération d'images sur ce site, qui ne sont pas difficile à utiliser ;)

signaler à un administrateur
Commentaire de coucou747 le 11/09/2008 18:54:47

t'en as ptet 10... pas plus

signaler à un administrateur
Commentaire de Anto1982 le 09/10/2008 18:51:43

petite idée:
Supposons que tu génères une variable du genre:
vertbleuvertrougeorange
Pour composer cette variable, tu tires au sort le nom d'une couleur parmi 4 couleurs, si la couleur a déjà été tirée 2 fois, tu tire au sort parmi les trois couleurs restantes.

tu incrémentes ta variable 5 fois avec 4 couleurs (il y en aura une qui sera citée donc 2 fois) mais tu sais laquelle car ton code le détecte.

tu pose la question: Quelle est la couleur cité 2 fois?
dans mon exemple, il s'agit de "vert"
=> bonne réponse tu valides le form, mauvaise réponse, tu regénères ta variable et tu recommences...

Bonne idée....?


Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

formulaire mail [ par arnaud ] quand je recoit un formulaire mail je trouve le fichier postdata.att ... comment fair pour l'avoir sans les 20% et les "+"merciarnaud php et html [ par Vinz ] Salut,Voila, j'utilise un formulaire qui me lance un php. Dans ce formulaire j'ai un &lt;input type=file name='monFile'&gt;.Mon probleme c'est que j'a Formulaire PHP3 + PJ [ par Jiboule ] Salut à tous ! Quelqu'un peut-il me sauver ? J'ai fait un formulaire en HTML avec une dizaine de champs + la possibilité de joindre un fichier. Je ne Formulaire PHP3 + PJ [ par Jiboule ] Salut à tous ! Quelqu'un peut-il me sauver ? J'ai fait un formulaire en HTML avec une dizaine de champs + la possibilité de joindre un fichier. Je ne code simple pour formulaire [ par bernard ] bonsoir à tous, je suis débutant de chez débutant et j'ai besoin d'aide.je voudrais réaliser un programme en php.il s'agit d'un formulaire où le visit Formulaire + fichier externe [ par koko ] J'ai un petit formulaire avec 2 text (&lt;INPUT TYPE="text") et un button. Quand je clique sur le button, il doit mettre les 2 text dans un fichier ex Formulaire et SQL [ par Christophe46 ] Salut,J'espère trouver de l'aide sur ce forum,J'ai fait une base de données MySql, avec une table et des champs comme nom, prenom, telephone, adresse, Formulaire et SQL [ par Christophe46 ] Salut,J'espère trouver de l'aide sur ce forum,J'ai fait une base de données MySql, avec une table et des champs comme nom, prenom, telephone, adresse, Formulaire [ par benett ] Bonjour à tous,J'ai une petite question :Dans un formulaire, certaine valeurs s'obtiennent par recopie et proviennent d'une autre page,comment peut-on Formulaire [ par benett ] Bonjour à tous,J'ai une petite question :Dans un formulaire, certaine valeurs s'obtiennent par recopie et proviennent d'une autre page,comment peut-on


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 3,338 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.