"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 -
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+!
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+!
A voir également:
- Captcha ants
- Ants captcha invalide - Forum Mozilla Firefox
- Saisir code captcha ✓ - Forum Réseaux sociaux
- Erreur ants - Forum Réseaux sociaux
- Impossible de joindre un fichier sur ants - Forum Yahoo mail
- Problème connexion ants - Accueil - Services en ligne
3 réponses
Salut,
pour utiliser les SESSIONS il faut ouvrir la session, c'est à dire mettre session_start(); au début de ton script
pour utiliser les SESSIONS il faut ouvrir la session, c'est à dire mettre session_start(); au début de ton script
C'est fait...
Le problème vient du fait que le résultat se recharge à l'envoi du formulaire!
Merci
Le problème vient du fait que le résultat se recharge à l'envoi du formulaire!
Merci
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
Cette ligne n'est pas correctement faite avec les " et '
echo $_SESSION['nombre_aleatoire']. '+' .$_SESSION ['nombre_aleatoire2']. '=';
il faut:
Voilà
@lain
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