Comment faire foncitonne correctement mon captcha
ANTHURIUMRE
Messages postés
118
Statut
Membre
-
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
- Colombe souhaite utiliser cette image comme illustration. quel texte doit-elle ajouter pour attribuer correctement la photographie à son auteur ? - Forum Photofiltre
- Captcha incorrect - Forum Réseaux sociaux
- La fenetre actuelle est trop petite pour afficher correctement cette feuille - Forum Google Docs
- Ants captcha invalide - Forum Mozilla Firefox
- Saisir code captcha ✓ - Forum Réseaux sociaux
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.