Comment faire foncitonne correctement mon captcha
ANTHURIUMRE
Messages postés
93
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je dois mettre sur un site un captcha pour canaliser les faux messages. J'ai trouvé sur le net un script bien que le captcha fonctionne bien sur mon formulaire de façon aléatoire les messages sont quand même postés dans ma bdd que la réponse soit bonne ou non. C'est à dire mon fichier post.php ne fonctionne pas. Pouvez-vous m'aider s'il vous plait. Merci par avance et voici ci dessous mes scripts :
formulaire.php
mafonction captcha
mon post.php
Je dois mettre sur un site un captcha pour canaliser les faux messages. J'ai trouvé sur le net un script bien que le captcha fonctionne bien sur mon formulaire de façon aléatoire les messages sont quand même postés dans ma bdd que la réponse soit bonne ou non. C'est à dire mon fichier post.php ne fonctionne pas. Pouvez-vous m'aider s'il vous plait. Merci par avance et voici ci dessous mes scripts :
formulaire.php
<label for="captcha">Combien font <?php echo captcha(); ?></label>
<input type="text" name="captcha" id="captcha"/><br/>
mafonction 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;
}
?>
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');
}
?>
A voir également:
- Comment faire foncitonne correctement mon captcha
- Clémence souhaite faire calculer automatiquement les prix de 30 produits dans trois devises. elle a déjà saisi une formule de calcul pour le tarif du premier produit dans la première devise. corrigez sa formule afin que recopiée vers le bas puis vers la droite, elle remplisse correctement tout le tableau. - Forum Excel
- Captcha incorrect - Forum Réseaux sociaux
- Un cable reseau n'est pas branché correctement ou est endommagé ✓ - Forum Windows 7
- Captcha impossible à valider ✓ - Forum Mozilla Firefox
- La fenetre actuelle est trop petite pour afficher correctement cette feuille - Forum Google Docs
4 réponses
Bonsoir DDD,
J'ai mis en majuscule mais cela ne change rien. Merci de t'intéresser à mon cas.
I put in capital letter but nothing change. Thank your for your help.
J'ai mis en majuscule mais cela ne change rien. Merci de t'intéresser à mon cas.
I put in capital letter but nothing change. Thank your for your help.
As-tu bien mis session_start(); dans la page où se trouve ta fonction captcha?
Je n'arrive pas non plus à comprendre le début de post.php
Peu importe le nombre qu'on entre dans l'input captcha, le message est envoyé vers la bdd, c'est ça?
Je n'arrive pas non plus à comprendre le début de post.php
<?php session_start(); $_SESSION['captcha']=$resultat; //La valeur de $resultat n'est pas déclarée avant qu'elle soit attribuée //à $_SESSION['captcha']!?
Peu importe le nombre qu'on entre dans l'input captcha, le message est envoyé vers la bdd, c'est ça?
Bonsoir Sunr,
J'ai mis dans la page de mon formulaire
et entre temps j'ai mis aussi ce code en haut de ma page post.php.
Mais rien n'y fait. En effet peu importe le nombre qu'on entre dans l'input captcha, le message est envoyé vers la bdd.
Merci de chercher à m'aider.
J'ai mis dans la page de mon formulaire
<?php
session_start();
print_r($_SESSION['captcha']);
?>
et entre temps j'ai mis aussi ce code en haut de ma page post.php.
Mais rien n'y fait. En effet peu importe le nombre qu'on entre dans l'input captcha, le message est envoyé vers la bdd.
Merci de chercher à m'aider.