captcha ne fonctionne pas

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : captcha ne fonctionne pas

Re: captcha ne fonctionne pas

par liliade » 11 juil. 2014, 19:56

Merci quand même Elie

Re: captcha ne fonctionne pas

par Elie » 11 juil. 2014, 19:55

Désolé mais je ne peux rien faire pour toi alors.

Re: captcha ne fonctionne pas

par liliade » 11 juil. 2014, 19:49

Non je ne vois pas de captcha d'écrit et même en mettant // devant mes header il me redirige vers l'article.

Re: captcha ne fonctionne pas

par Elie » 11 juil. 2014, 19:33

Ne brulons pas les étapes ...
Là on cherche a savoir si la $_SESSION marche bien ...
As-tu vu le captcha d'écrit ?

Met des // devant tes header('location: pour éviter la redirection...

Re: captcha ne fonctionne pas

par liliade » 11 juil. 2014, 19:15

Bonsoir Elie,

Quand je fais

<?php session_start();
print_r($_SESSION['captcha']);
?>

 
les commentaires continuent d'être enregistrés dans ma bdd, que la réponse soit bonne ou fausse. Merci de t'intéresser à mon problème.

Re: captcha ne fonctionne pas

par Elie » 11 juil. 2014, 14:21

<?php session_start();
$_SESSION['captcha']=$resultat;
$resultat n'est renseigné nul part ... Donc ta session = le vide ...

Ta session étant déclaré dans captcha() que ce passe t il si tu fais juste
<?php session_start();
print_r($_SESSION['captcha']);

captcha ne fonctionne pas

par arthur75 » 11 juil. 2014, 10:57

Bonjour,

Je veux mettre un captcha sur site afin d'éviter les messages des bots. J'ai trouvé des scripts sur le net. En mettant sur mon formulaire, les formules aléatoires du captcha s'affichent correctement mais quelle que soit la réponse vrai ou fausse, les commentaires sont enregistrés dans ma bdd. Cela est sûrement dû à une mauvaise interprétation du code. Pouvez-vous me dire comment je dois faire dans mon post.php qui est censé vérifié que tout soit correctement rempli. Merci pour votre aide.

Voici une partie de mon formulaire :
<label for="captcha">Combien font <?php echo captcha(); ?></label>
	<input type="text" name="captcha" id="captcha"/><br/>
voici la fonction captcha :
<?php
function captchaMath()
{
	$n1 = mt_rand(0,10);
	$n2 = mt_rand(0,10);
	$nbrFr = array('zero','un','deux','trois','quatre','cinq','six','sept','huit','neuf','dix');
	$resultat = $n1 + $n2;
	$phrase = $nbrFr[$n1] .' plus '.$nbrFr[$n2];
	
	return array($resultat, $phrase);	
}

function captcha()
{
	list($resultat, $phrase) = captchaMath();
	$_SESSION['captcha'] = $resultat;
	return $phrase;
}
?>
 
et mon post.php
<?php session_start();
$_SESSION['captcha']=$resultat;
?>


<?php
//connexion à la base de donnée

 try
 {
	$bdd= new PDO('mysql:host=localhost;dbname=bdd','pourquoipas','pw');

 }
 catch(Exception $e)
 {
	die('Erreur:'.$e->getMessage());
} 
?>

$id_billet = (int) htmlspecialchars($_GET['billets']);

if( isset($_GET['billets'], $_POST['titre'], $_POST['auteur'], $_POST['mail'], $_POST['commentaire'], $_POST['botOrNotBot'],$_POST['captcha']) 


&& !empty($_GET['billets']) && !empty($_POST['titre']) && !empty($_POST['auteur']) && !empty($_POST['mail']) && !empty($_POST['commentaire'])
 && !empty($_POST['imNotBot']) && !empty ($_Post['captcha'])) 
&& preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#",$_POST['mail'])  



 )

{ if($_POST['captcha']==$_SESSION['captcha']) }

{
	// ON sécurise tout ça, très important !!
	$titre = stripslashes (htmlspecialchars($_POST['titre']));
	$auteur = stripslashes (htmlspecialchars($_POST['auteur']));
	$mail = stripslashes (htmlspecialchars($_POST['mail']));
	$commentaire = stripslashes (htmlspecialchars($_POST['commentaire']));

	

	// Insertion des données à l'aide d'une requête préparée
	$req = $bdd->prepare('INSERT INTO commentaires (id_billet, titre, auteur, mail, commentaire, date_commentaire) VALUES (?,?,?,?,?,NOW())');
	if( $req->execute(array($id_billet, $titre, $auteur, $mail, $commentaire)) )
	
	



		
		{
		header('location: controleur/commentaire/index.php?billets='.$id_billet.'&msg=3');
		}
	else
		{
		header('location: controleur/commentaire/index.php?billets='.$id_billet.'&msg=4');
		}


}

	else
		{
		header('location: controleur/commentaire/index.php?billets='.$id_billet.'&msg=1');
		}

	
?>