"Captcha",je n'y arrive pas...

Résolu
Paulo62500 Messages postés 203 Date d'inscription   Statut Membre Dernière intervention   -  
Paulo62500 Messages postés 203 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,je veux protéger mon minichat avec une sorte de "captcha" simplifié.
En fait je propose un petit calcul et je vérifie tout simplement le résultat,mais bon ça ne fonctionne pas car ja n'arrive pas à stocker le résultat du calcul constant c'est à dire qu'à la validation du formulaire alors impossible d'avoir le bon résultat_visiteur car le résultat est changé...
Bon j'espère que j'ai été clair je mets le code(ça sera plus simple):p!


<!------------------------------------FORMULAIRES------------------------------------->
<fieldset id="form">
<legend>Chat</legend>
<form action="livre_or.php" method="post">
<p class="formulaire">Posez votre question!<br/>
<label>Votre pseudo</label> :<br/> <input type="text" name="pseudo" /><br/>
<label>La matière</label> :<br/> <input type="text" name="matiere" /><br/>
<label>Votre question/message</label> :<br/> <textarea name="message"></textarea><br/>
<?php
//Pas avec les constantes car seront détruites...
$_SESSION['nombre_aleatoire'] = mt_rand(0,100);
$_SESSION['nombre_aleatoire2'] = mt_rand(0,100);
$_SESSION['resultat'] = $_SESSION['nombre_aleatoire'] + $_SESSION ['nombre_aleatoire2'];
echo $_SESSION['nombre_aleatoire']. '+' .$_SESSION ['nombre_aleatoire2']. '=';
?>
<label>Donnez le résultat svp</label>:<br/><input type="text" name="resultat_visiteur" /><br/><br/>
<input type="submit" value="valider" />


<?php

$hote = "****";
$login = "*****";
$mdp = "*****";
$data_base = "******";

//---------------Etape1----------------
// On enregistre si quelquechose
//---------------------------------------

if(isset($_POST['pseudo']) AND isset($_POST['message']) AND isset($_POST['resultat_visiteur']))
{
if($_POST['pseudo'] != NULL AND $_POST['message'] != NULL AND $_POST['resultat_visiteur'])
{
$resultat_visiteur = mysql_real_escape_string(htmlspecialchars($_POST['resultat_visiteur']));
if($resultat_visiteur == $_SESSION['resultat'])
//Ne pas mettre en dehors d'ici ou a cote ne pas mettre de die....!!!!!!!!!Attention aux logiques pour les conditions!
{
mysql_connect("$hote","$login","$mdp");
mysql_select_db("$data_base");

$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = nl2br($message);
$message = addslashes($message);
$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
mysql_query("INSERT INTO livre_or VALUES('', '" . $pseudo . "', '" . $message . "')") or die(mysql_error());
mysql_close();
}

else
{
echo('resulat faux');
echo $_POST['resultat_visiteur'].'<br/>';
echo $_SESSION['resultat'];
}
}

else
{
echo 'Veuillez remplir tous les champs';
}
}




Bon voilà merci beaucoup de votre aide et a+!

3 réponses

Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Salut,

pour utiliser les SESSIONS il faut ouvrir la session, c'est à dire mettre session_start(); au début de ton script
0
Paulo62500 Messages postés 203 Date d'inscription   Statut Membre Dernière intervention   6
 
C'est fait...

Le problème vient du fait que le résultat se recharge à l'envoi du formulaire!
Merci
0
Alain_42 Messages postés 5361 Date d'inscription   Statut Membre Dernière intervention   894
 
Normal il faut faire le traitement php AVANT l'affichage du formulaire HTML

ce code marche, je t'ai mis les lignes concernant le BDD mysql en commentaire, remets les normales

j'ai changé le nom dans <form action="... remets livre_dor.php

<?php
session_start();
//il ne doit rien  y avoir avant session_start()  autre que <?php  (pas de balise HTML ni d'espace)
/*
$hote = "****";
$login = "*****";
$mdp = "*****";
$data_base = "******";
*/
//---------------Etape1----------------
// On enregistre si quelquechose
//---------------------------------------

if(isset($_POST['pseudo']) AND isset($_POST['message']) AND isset($_POST['resultat_visiteur']))
{
if($_POST['pseudo'] != NULL AND $_POST['message'] != NULL AND $_POST['resultat_visiteur'])
{
//$resultat_visiteur = mysql_real_escape_string(htmlspecialchars($_POST['resultat_visiteur']));
$resultat_visiteur =htmlspecialchars($_POST['resultat_visiteur']);
if($resultat_visiteur == $_SESSION['resultat'])
//Ne pas mettre en dehors d'ici ou a cote ne pas mettre de die....!!!!!!!!!Attention aux logiques pour les conditions!
{
/*
mysql_connect("$hote","$login","­;$mdp");
mysql_select_db("$data_base");
*/
//$message = mysql_real_escape_string(htmlspecialchars($_POST['message']));
$message = htmlspecialchars($_POST['message']);
$message = nl2br($message);
$message = addslashes($message);
//$pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudo']));
$pseudo =htmlspecialchars($_POST['pseudo']);
/*
mysql_query("INSERT INTO livre_or VALUES('', '" . $pseudo . "', '" . $message . "')") or die(mysql_error());
mysql_close();
*/
echo "resultat correct: ".$_SESSION['nombre_aleatoire']. "+" .$_SESSION ['nombre_aleatoire2']. "= votre saisie:".$resultat_visiteur; //ça c'est pour l'essai
}

else
{
echo('resulat faux');
echo $_POST['resultat_visiteur'].'<br/>';
echo $_SESSION['resultat'];
}
}

else
{
echo 'Veuillez remplir tous les champs';
}
}
?>

<html>
 <fieldset id="form">
<legend>Chat</legend>
<form action="pseudo_capcha.php" method="post">
<p class="formulaire">Posez votre question!<br/>
<label>Votre pseudo</label> :<br/> <input type="text" name="pseudo" /><br/>
<label>La matière</label> :<br/> <input type="text" name="matiere" /><br/>
<label>Votre question/message</label> :<br/>
 <textarea name="message"></textarea><br/>
<?php
//Pas avec les constantes car seront détruites...
$_SESSION['nombre_aleatoire'] = mt_rand(0,100);
$_SESSION['nombre_aleatoire2'] = mt_rand(0,100);
$_SESSION['resultat'] = $_SESSION['nombre_aleatoire'] + $_SESSION ['nombre_aleatoire2'];
echo $_SESSION['nombre_aleatoire']. '+' .$_SESSION ['nombre_aleatoire2']. '=';
?>
<label>Donnez le résultat svp</label>:<br/>
<input type="text" name="resultat_visiteur" /><br/><br/>
<input type="submit" value="valider" />



</html>


Cette ligne n'est pas correctement faite avec les " et '
echo $_SESSION['nombre_aleatoire']. '+' .$_SESSION ['nombre_aleatoire2']. '=';


il faut:
echo $_SESSION['nombre_aleatoire']."+".$_SESSION ['nombre_aleatoire2']."=";


Voilà

@lain
0
Paulo62500 Messages postés 203 Date d'inscription   Statut Membre Dernière intervention   6
 
Okok merci beaucoup!
En effet variables aléatoires!!

A+
0