Anti-spam simple à inserer mais nécessite bdd

Soyez le premier à donner votre avis sur cette source.

Vue 7 829 fois - Téléchargée 427 fois

Description

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 / Exemple :


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

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
2
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
18 février 2011

la variable $data n'est pas définit ( c'est écrit après avoir lancer le code ) . Merci de me dire comment faire....
Messages postés
2
Date d'inscription
mardi 8 juillet 2008
Statut
Membre
Dernière intervention
18 février 2011

beaucoup de critique et personne ne propose une solution claire avec un code :- |
Messages postés
4
Date d'inscription
jeudi 17 janvier 2008
Statut
Membre
Dernière intervention
31 janvier 2009

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....?
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
35
t'en as ptet 10... pas plus
Messages postés
200
Date d'inscription
samedi 25 décembre 2004
Statut
Membre
Dernière intervention
19 août 2009

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 ;)
Afficher les 15 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.