Vous pouvez voir mon problème sur ma page : Commentaires.
Mes problèmes sont les suivants :
- Même si j’entre mon 2ème captcha juste (celui avec le fond noir), il m’indique qu’il est faut lors de la vérification.
- Et je ne sais pourquoi il y a des doublons des messages dans ma table MySQL.
Pour le premier captcha j’utilise l’API : reCaptcha.
Partie commentaires.php :
<div id="newsComment">
<form method="post" action="verifcomment.php" id="formComment">
<fieldset><legend>Poster un commentaire</legend>
<p>
<label for="commentPseudo">Pseudo :</label>
<input type="text" name="pseudo" />
</p>
<p>
<label for="commentYour">Votre commentaire :</label>
<textarea name="message" rows="5" cols="35"></textarea>
</p>
<p>
<label for="antiRobots">Vérification anti-robots :</label>
<?php
require_once('recaptchalib.php');
*
$publickey = "6LdIfAEAAAAAAO2lF6T4xG0ZHuGq1nSzB5KFG-Xl";
$privatekey = "6LdIfAEAAAAAAPy4paLl_Kry5hgY45-DgkL_LOQF";
*
// La réponse de reCaptcha
$resp = null;
// the error code from reCAPTCHA, if any
$error = null;
*
# was there a reCAPTCHA response?
if ($_POST["recaptcha_response_field"]) {
********$resp = recaptcha_check_answer ($privatekey,
****************************************$_SERVER["REMOTE_ADDR"],
****************************************$_POST["recaptcha_challenge_field"],
****************************************$_POST["recaptcha_response_field"]);
********if ($resp->is_valid) {
echo 'C'est bon vous êtez un humain.';
********} else {
****************# set the error code so that we can display it
****************$error = $resp->error;
********}
}
echo recaptcha_get_html($publickey, $error);
?>
</p>
<p>
<label for="captcha">Captcha :</label>
<img alt="Image Aléatoire" src="img_verif.php" />
<input type="text" name="code" id="code" />
</p>
<input type="hidden" name="idcomment" value="<?php echo $_GET['idnews']; ?>" />
<input type="submit" name="submit" value="Envoyer !" />
</fieldset>
</form>
</div>
Et la partie verifcomment.php :
<?php
if (isset($_POST['message']) AND isset($_POST['pseudo']) AND isset($_POST['code'])) {
$auteur = addslashes(htmlentities($_POST['pseudo']));
$message = addslashes(htmlentities($_POST['message']));
$code = $_POST['code'];
$idcomment = $_POST['idcomment'];
if(!empty($auteur) && !empty($message) && !empty($code)) {
if ($code == $_SESSION['code']) {
/*******************************************************
SCRIPT ANTI FLOOD
*******************************************************/
// Initialisation du nombre de seconde entre chaque post
$time_flood = '60';
// On récupère l'IP du visiteur, en premier on l'insère dans la table
mysql_query("INSERT INTO flood VALUES ('$_SERVER[REMOTE_ADDR]', '".time()."')");
*
// On supprime tout ceux dont le temps a expiré.
mysql_query("DELETE FROM flood WHERE dernier + $time_flood < " .time());
*
// On récupère l'IP du visiteur
$resultat = mysql_query("SELECT dernier FROM flood WHERE ip='$_SERVER[REMOTE_ADDR]'");
*
// Si l'IP est déjà dans la table ... Gare à ses fesse !
if (mysql_num_rows($resultat) > 0) {
echo 'Vous devez patienter '.$time_flood.' secondes avant de pouvoir reposter.';
} else {
// 4° sinon tout va bien, reste plus qu'a inserer l'ip de votre visiteur dans la table
mysql_query("INSERT INTO flood VALUES ('$_SERVER[REMOTE_ADDR]', '".time()."')");
mysql_query("INSERT INTO `commentaires` (pseudo, message, idnews) VALUES (
'".$auteur."',
'".$message."',
'".$idcomment."'
)") or die("J'arrive pas à insérer ...");
echo 'Merci d'avoir commenté ! Vous allez être redirigé ...';
?>
<script language="JavaScript">
document.location.href="index.php";
</script>
<?php
}
} else {
echo 'Le code entré n'est pas valide !';
?>
<lien=javascript:history.back(1)>Revenir en arrière.</lien>
<?php
}
} else {
echo 'T'aurais pas oublié quelque chose ?';
?>
<lien=javascript:history.back(1)>Revenir en arrière.</lien>
<?php
}
}
?>