Rechercher : dans
Par :

Recherche script PHP anti-spam ou Captcha

Dernière réponse le 5 mai 2008 à 08:29:09 stefart, le 15 avr 2008 à 16:02:23 
 Signaler ce message aux modérateurs

Bonjour,

Je suis a la recherche script PHP anti-spam ou Captcha simple d'utilisation mais bien sur efficace
Ca fonction serait de supprimer le spam sur le formulaire d'inscription et de contact a un de mes site en php

Après recherche sur le forum il y en a beaucoup de différents et comme je ne suis pas un pro en php je souhaite pas me prendre la tête a ajouter un script qui serait trop complexe ou inefficace.

alors merci de vos suggestion
--

Configuration: Windows XP
Firefox 2.0.0.13

Meilleures réponses pour « Recherche script PHP anti spam ou Captcha » dans :
[Free] Activer le filtre anti-spam VoirC'est une fonction peu connue, mais Free propose un anti-spam gratuitement. Il est relativement efficace. Il suffit de l'activer sur votre boite mails. Les mails identifiés comme spam n'arriveront même pas jusque dans votre boite email (ce qui évite...
Implantation du code Php VoirL'interprétation du code par le serveur Un script PHP est un simple fichier texte contenant des instructions écrites à l'aide de caractères ASCII 7 bits (des caractères non accentués) incluses dans un code HTML à l'aide de balises spéciales et...

1

web_traveller, le 15 avr 2008 à 20:16:53

Salut Stefart,

C'est tout expliqué ici :
http://www.6ma.fr/tuto/image+securite+pour+formulaires+php-3­57

Je ne sais pas quel est ton niveau en PHP mais j'espère que ca pourra t'aider.

Bonne chance !

Répondre à web_traveller

2

stefart, le 16 avr 2008 à 12:43:43

Merci beaucoup de ta source web_traveller
mais mon problème est que j'ai deja sur mon site et surtout sur ma page un session_start(); en debut de page alors si j'utilise le variable de session du captcha
ca m'empêche donc de me loger sur si non ça détruit la première ou interdit l'accès a la page !

ou alors c'est moi qui intègre mal le code dans la page ?! :(

voila deja le code session_start() que j'utilise sur ma page :

<?php
session_start();
//session inscription au site -----------------------
if ($HTTP_POST_VARS['inscription']=="ok")
{
	//sélection de la base de données
	mysql_select_db($database_cnx_pa, $cnx_pa);
	//vérification si le mail existe déjà dans la base
	$FORMemail=trim($FORMemail); //supprime les espaces éventuels
	$query_rsClient = "SELECT email FROM clients WHERE email = '$FORMemail' ";
	$rsClient = mysql_query($query_rsClient , $cnx_pa) or die(mysql_error());
	$totalRows_rsClient = mysql_num_rows($rsClient);
	//echo '$totalRows_rsClient='.$totalRows_rsClient;
	if ($totalRows_rsClient==0)
		{
			//enregistrement dans la base du nouveau compte client
			$insertSQL = "INSERT INTO clients (nom, email, pass) VALUES ('$nom', '$FORMemail', '$FORMpass')";
			$Result1 = mysql_query($insertSQL , $cnx_pa) or die(mysql_error()); 
			$clientID=mysql_insert_id();//récupère l'identifiant client attibué 
			//mémorisation des paramètres dans la session
			$statut="client";
			session_register("clientID");
			session_register("statut");
			header("Location:menu.php");
		}//fin du if ($totalRows_rsClient==0)
	else
		{
		$erreur_mail=1;
		}
}//fin du if ($HTTP_POST_VARS['inscription']=="ok") -------------------
?>

et l'action de mon form est la suivante :
form action="<?php echo $editFormAction; ?>" method="post" name="form" id="form"  onSubmit="return testform(this.nom,this.FORMemail,this.FORMpass)">


y'a une solution simple pour contourné le problème ? ou pas

j'imagine que 2 variable de session sur la même page c'est chaud a non ??!!

Déjà pour le formulaire de contact ça marche bien alors merci un bon point de resolu.

Mais si tu a des idées pour mon probleme de session je prend merci
--

Répondre à stefart

3

web_traveller, le 24 avr 2008 à 12:17:11

Salut Stefart,

Tu peux tout a fait ouvrir une session au point d'entrée de ton utilisateur. Ensuite, sur le formulaire avec la captcha, tu ne mets PAS session_start(); car la session est déjà ouverte, mais par contre tu utilises les variables de cette même session dont tu as besoin pour le formulaire captcha, par exemple $_SESSION['code']=$code;

Une session est unique pour chaque utilisateur de ton site, et donc comme tu dis en effet, on ne démarre pas plusieurs sessions par page. Par contre la session se transmet de page en page ce qui est l'avantage.

Regarde sur cette page si tu veux plus d'explications sur les sessions :
http://www.programmationworld.com/...

J'espère que ça va marcher pour toi !

Web Traveller

Répondre à web_traveller

4

stefart, le 29 avr 2008 à 14:40:48

Salut web_traveller

merci pour tes lumières mais j'y arrive ça marche pas !!

voici mon code source :


<?php

session_start();
//session inscription au site -----------------------
if ($HTTP_POST_VARS['inscription']=="ok")
{
	//sélection de la base de données
	mysql_select_db($database_cnx_pa, $cnx_pa);
	//vérification si le mail existe déjà dans la base
	$FORMemail=trim($FORMemail); //supprime les espaces éventuels
	$query_rsClient = "SELECT email FROM clients WHERE email = '$FORMemail' ";
	$rsClient = mysql_query($query_rsClient , $cnx_pa) or die(mysql_error());
	$totalRows_rsClient = mysql_num_rows($rsClient);
	//echo '$totalRows_rsClient='.$totalRows_rsClient;
	if ($totalRows_rsClient==0)
		{
			//enregistrement dans la base du nouveau compte client
			$insertSQL = "INSERT INTO clients (nom, email, pass) VALUES ('$nom', '$FORMemail', '$FORMpass')";
			$Result1 = mysql_query($insertSQL , $cnx_pa) or die(mysql_error()); 
			$clientID=mysql_insert_id();//récupère l'identifiant client attibué 
			//mémorisation des paramètres dans la session
			$statut="client";
			session_register("clientID");
			session_register("statut");
			header("Location:menu.php");
		}//fin du if ($totalRows_rsClient==0)
	else
		{
		$erreur_mail=1;
		}
}//fin du if ($HTTP_POST_VARS['inscription']=="ok") -------------------
?>




<form action="<?php echo $editFormAction; ?>" method="post" name="form" id="form"  onSubmit="MM_validateForm('nom','','R','FORMemail','','R','verif','','R','FORMpass','','R');return document.MM_returnValue">
                      <table width="400" border="0" align="center" cellpadding="0" cellspacing="3">
                        <tr>
                          <td width="126"><div align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Nom</font></div></td>
                          <td colspan="2"><input name="nom" type="text" id="nom" size="30">
                            **</td>
                        </tr>
                        <tr>
                          <td><div align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">E-Mail</font></div></td>
                          <td colspan="2"><input name="FORMemail" type="text" id="FORMemail" size="30">
                          **</td>
                        </tr>
                        <tr>
                          <td><div align="right">Mot de passe</div></td>
                          <td colspan="2"><input name="FORMpass" type="password" id="FORMpass" size="10" maxlength="10"> 
                            10car
                            maxi**</td>
                        </tr>
                        <tr>
                          <td colspan="3" align="center">Recopiez le code de v&eacute;rification suivant :</td>
                        </tr>
                        <tr>
                          <td>&nbsp;</td>
                          <td width="96"><img src="imagesecu.php" alt="image de protection" /></td>
                          <td width="166"><input type="text" name="verif" size="10" maxlength="6" /></td>
                        </tr>
                        <tr>
                          <td colspan="3" align="center">
                            <input type="checkbox" name="accord" id="accord" value="OUI"><a href="mentions_legales.php]">
                          Accord les Conditions G&eacute;n&eacute;rales</a></td>
                        </tr>
                        <tr>
                          <td colspan="3"><div align="center"><font color="#FF0000">** Attention tous les champs sont obligatoires</font></div></td>
                        </tr>
                        <tr>
                          <td><input name="inscription" type="hidden" id="inscription" value="ok"></td>
                          <td colspan="2"><input type="submit" name="Submit" value="Envoyer"></td>
                        </tr>
                      </table>
					  
                    </form>

<?php
// On initialise la session Anti-spam

/* on vérifie que la code est toujours mémorisé en session et qu'il fait 6 caractères */
if(!isset($_SESSION['code']) || strlen($_SESSION['code']) != 6) die("Erreur !");

// on vérifie que la code entré est valide
if($_SESSION['code'] != $_POST['verif']) die("Erreur : le code de protection est invalide !");

/*
Ici on traite les données du formulaire, on envoie le mail par exemple pour un formulaire de contact
*/

// on détruit les variables de session, désormais inutiles
session_unset();
session_destroy();
?>

<input type="hidden" name="MM_insert" value="form1">


merci
--

Répondre à stefart

5

web_traveller, le 30 avr 2008 à 15:34:17

Salut Stefart !

Quel est le problème que tu rencontres exactement avec ton script ? Donne-moi des précisions autrement c'est difficile de t'aider.

Web Traveller

Répondre à web_traveller

7

 stefart, le 5 mai 2008 à 08:29:09

Salut

mon problème est que je ne sais pas ou placer le script de Captcha dans la page pour que ça fonctionne !

Avant ! formulaire il m'indique uniquement erreur (normale j'imagine puis que le code n'a pas encore été saisi)
Apres ! avec ou sans le code l'enregistrement passe

Indication : mon formulaire d'inscription et mon script d'enregistrement est sur la même page d'où l'erreur !

merci de ton aide en tous cas
--

Répondre à stefart

6

bg62, le 30 avr 2008 à 16:53:17
  • +3

Un captcha tout simple et efficace :

<?php
class capcha{

	var $min;
	var $max;
	var $alphabet;
	var $word;
	var $num;
	var $numletter;

	function capcha(){
		$this->min = 4;
		$this->max = 6;
		$this->alphabet = 'abcdefghijklmnopqrstuvwxyz';
		$this->grain_de_sel = '6tIb90ZAS11';
		$this->word = $this->createWord();
		$this->num = $this->chooseNum();
		$this->numletter = $this->num2letter();
	}
	
	function q(){
		return 'Quelle est la '.$this->numletter.' lettre du mot '.$this->word.' ?';
	}

	function createWord(){

		$len = rand($this->min,$this->max);
		for($i=0;$i<$len;$i++){
			$word[$i] = $this->alphabet[rand(0,strlen($this->alphabet)-1)];
		}
		return implode('',$word);
	}

	function chooseNum(){
		return rand(1,strlen($this->word));
	}

	function num2letter(){
		if($this->num == strlen($this->word)){
			return 'dernière';
		}
		$array = array('1' => 'première','2' => 'deuxième','3' => 'troisième','4' => 'quatrième','5' => 'cinquième','6' => 'sizième','7' => 'septième','8' => 'huitième','9' => 'neuvième','10' => 'dixième');
		if(isset($array[$this->num])){
			return $array[$this->num];
		}else{
			return $this->num.'.ème';
		}	
	}

	function r(){
		return md5($this->grain_de_sel.$this->word[$this->num-1]);
	}
}
?>

@+
b g
le 'www' est fait aussi pour communiquer, partager et échanger, non ?

Répondre à bg62
Collection CommentÇaMarche.net