begin process at 2012 02 15 21:59:41
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Formulaires

 > ANTI-SPAM SIMPLE À INSERER MAIS NÉCESSITE BDD

ANTI-SPAM SIMPLE À INSERER MAIS NÉCESSITE BDD


 Information sur la source

Note :
Aucune note
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é :6 449 / 272

Auteur : azumi13

Ecrire un message privé
Site perso
Commentaire sur cette source (15)
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

Les Membres Club peuvent 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

 Sources de la même categorie

Source avec Zip VÉRIFICATION DE FORMULAIRE EN PHP par psonic13
Source avec Zip Source avec une capture CALENDRIER RÉSERVATION POUR CHAMBRES D'HÔTES EN PHP MYSQL par oallais
Source avec Zip Source avec une capture UPLOADEUR DE FICHIERS MULTIPLES V1 par cod57
FORM, ORM POUR FORMULAIRE par choy
Source avec Zip Source avec une capture LOGIN SHA1 + CRÉATION UTILISATEUR par aventurier19

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture FORM TO MAIL AVEC PROTECTION PAR TOKEN ET CAPTCHA CONTRÔLES ... par cod57
Source avec Zip VÉRIFICATION DE FORMULAIRE EN PHP par psonic13
Source avec Zip Source avec une capture FORMULAIRE VERS COURRIEL BASIQUE AVEC CONTRÔLE CAPTCHA ANTI ... par cod57
Source avec Zip Source avec une capture GÉNÉRATION DE FORMULAIRES HTML PERSONNALISÉS. par beejeridou
Source avec Zip Source avec une capture WAVY CAPTCHA par malalam

Commentaires et avis

Commentaire de coucou747 le 22/08/2008 06:59:12 administrateur CS

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.

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.

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.

Commentaire de coucou747 le 23/08/2008 15:21:33 administrateur CS

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

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.

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...

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.

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 ..

Commentaire de jdalton42 le 29/08/2008 13:07:56

tu LES compares.

sorry pour la faute de frappe.

Commentaire de coucou747 le 29/08/2008 13:09:53 administrateur CS

generer une bonne image, c'est hyper dur.

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 ;)

Commentaire de coucou747 le 11/09/2008 18:54:47 administrateur CS

t'en as ptet 10... pas plus

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....?


Commentaire de banderas10062 le 18/02/2011 15:39:33

beaucoup de critique et personne ne propose une solution claire avec un code :- |

Commentaire de banderas10062 le 18/02/2011 16:38:28

la variable $data n'est pas définit ( c'est écrit après avoir lancer le code ) . Merci de me dire comment faire....

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

captcha [ par aamsa ] Bonsoir a tous, j'ai cree une formulaire et j'aimerais ajouter un captcha anti-spam, j'ai googlee mais j'ai pas comprendre comment fonctionne ce captc Souci formulaire contact php avec captcha [ par snip74 ] Bonjour, je fait appel a vous car je pète un câble lol. Voila j'ai trouvé un système de captcha je les mis sur mon formulaire de contact et rien ne formulaire php htlm / captcha [ par djbabou ] Bonjour, a tous J'ai développé un formulaire dans lequel j'ai intégrer un captcha image. Comme tous captcha normalement construit, après soumission d Validation de formulaire avec Adobe Spry et Zend_captcha [ par maryleo ] Bonjour à tous! Excusez-moi de vous déranger, mais cela fait trois jours que je suis coincé sur un projet. Je développe actuellement un site web dans besoin pour inserer captcha [ par gilou312 ] bonjour, je voudrais inserer une captcha pour mon formulaire de contact, j'ai essayé de trouver des formulaires avec captcha integrer et verification valider un formulaire coté serveur [ par 77dom77 ] Bonjour! Je fais une fois de plus appel votre soutien technique! Dans la partie administrateur de mon site, je souhaite mettre en ligne des informat PHP MySQL requete d'affichage [ par babygamer ] Bonjours a tous et a toutes !! voici mon problème: Je voudrai récupérer une valeur saisi dans un formulaire afin de la tester si elle est égale a la c formulaire et api youtube [ par lezj ] bonjour à tous alors je viens vous exposer un problème que je rencontre en ce moment. je programme en ce moment un site web en php au sein duquel un formulaire php [ par papdak ] Bonjour à tous j'ai vraiment besoin de votre aide, car je suis entrain de créer le site web de mon ecole, et j'ai besoin de faire un formulaire d'insc aidez moi s'il vous plais [ par papdak ] Bonjour à tous j'ai vraiment besoin de votre aide, car je suis entrain de créer le site web de mon ecole, et j'ai besoin de faire un formulaire d'insc


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,499 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales