Problèmes Doublons et Sécurité dans Système de Commentaires

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
		}
	}
?>

Faut voir si le doublon vient au niveau de l’insertion dans la base de donnée (donc voir s’il s’insère 2 fois dans la bases de données) ou bien si c’est que tu affiches 2 fois le même enregistrement sur ta page.

En gros savoir si c’est un doublons au niveau de l’insertion, ou au niveau de l’affichage.
Après on pourra voir quel partie de code regarder :wink:

J’ai également des doublons dans ma table mais pas avec le même ID.

Edit: mon problème est résolu.