Mumulafrite Posté 14 Juin 2006 Posté 14 Juin 2006 (modifié) Bonjour tout le monde, Je viens à vous car je ne trouve pas la solution à mon problême. J'ai récupérer un script anti spam pour formulaire (les chiffres et les lettres à entrer pour envoyer formulaire) VOIR LE SCRIPT. Il fonctionne très bien mais j'y ai apporté deux ou trois modifications pour l'adapter à mon code. Le problème que j'ai maintenant c'est qu'il envoie le message meme si les caractères ne sont pas mis... Voici le morceau du code qui me pose problème: if($_POST && $_POST['vateuf'] != $_SESSION['code']) { echo "Les caractères ne correspondent pas !"; $_POST['vateuf'] = "";}//traitement formulaireif($_POST && $_POST['vateuf'] = $_SESSION['code']) {$pseudo = $_POST['pseudo']; $message = stripcslashes($_POST['message']); $db=connect_mysql(); $ip = $REMOTE_ADDR;$date=date("Y-m-d");//insertion formulaire$req="INSERT comments_reportage (id,reportage,pseudo,message,date,ip) VALUES ('','$numero','$pseudo','$message','$date','$ip') ";//execution requête$res=mysql_query($req) or die('Erreur SQL !<br>'.$req.'<br>'.mysql_error());close_mysql($db);echo("Votre commentaire a bien été envoyé"); exit;} echo $_SESSION['code'];?> Je sais pas si cela vient des conditions mais j'avoue ne pas savoir (ce n'est pas la dernière fois ) Si une personne pouvait me filer un coup de main ce serait super. Merci d'avance Modifié 15 Juin 2006 par Dudu
Dan Posté 14 Juin 2006 Posté 14 Juin 2006 if($_POST && $_POST['vateuf'] = $_SESSION['code']) { Il faudrait plutôt mettre un == en lieu et place d'un simple = Et tant qu'à faire, des parenthèses aideraient la lecture du code. if($_POST && ($_POST['vateuf'] == $_SESSION['code'])) { Dan
Mumulafrite Posté 14 Juin 2006 Auteur Posté 14 Juin 2006 merci, cela fait partie de multiples erreurs, merci
Boby Night Posté 14 Juin 2006 Posté 14 Juin 2006 (modifié) $message = stripcslashes($_POST['message']); C'est pas plutot stripslashes ? Modifié 14 Juin 2006 par Boby Night
Mumulafrite Posté 14 Juin 2006 Auteur Posté 14 Juin 2006 C'est pas plutot stripslashes ? Sisi une erreur de frappe Bon sinon j'ai crier victoire trop tot, cela ne fonctionne pas, il m'affiche caractère pas bon à chaque fois. Voici le code: ## Ediboxter ces variables## répertoire des images sous la forme a.gif, b.gif, 1.gif, etc.$rep_lettres = "../img/antispam/";# nombre de caractères (repris dans maxlength)$nbrchars = 5;# fichier de redirection, affichant la confirmation$confirmation = "./";## fin de l'édition#session_start();$imagecode = "";$erreur = ""; # toutes erreurs formulaire# le formulaire a été envoyé on vérifie la correspondanceif($_POST && $_POST['vateuf'] != $_SESSION['code']) { $erreur = "Les caractères ne correspondent pas !"; $_POST['vateuf'] = "";}# pas de session code ou demande d'un nouveau code# implémentation des sessions (si le répertoire existe)if((!$_SESSION['code'] || $_GET['newcode']) && $dossier = _AT_opendir($rep_lettres)) { # si un nouveau code a été demandé on efface la session if($_GET['newcode']) $_SESSION['code'] = ""; while ($fichier = _AT_readdir($dossier)) { if( $fichier == "." || $fichier == ".." || is_dir($fichier) ) continue; # on implémente le tableau $alphabet des fichiers/caractères $alphabet[] = $fichier; } _AT_closedir($dossier); $nbrimg = count($alphabet)-1; # tirage au sort des $nbrchars caractères composant le code for($i=0; $i<$nbrchars; $i++) $lettre[] = rand(0,$nbrimg); # implémentation de l'image $imagecode affichée, # de la session 'code' contenant la série de caractères à comparer # et des $nbrchars sessions préfixées par 'img_' $i=0; foreach($lettre as $val) { $imagecode .= "<img src='$rep_lettres$alphabet[$val]' alt=''>"; $_SESSION['code'] .= basename($alphabet[$val],'.gif'); $_SESSION['img_'.$i] = $alphabet[$val]; $i++; }# composition de l'image $imagecode si la session est implémentée} elseif($_SESSION['code']) { for($i=0; $i<$nbrchars; $i++) $imagecode .= "<img src='".$rep_lettres.$_SESSION['img_'.$i]."' alt=''>";}if($_POST && !strlen($erreur)) {$pseudo = $_POST['pseudo']; $message = stripcslashes($_POST['message']); $db=connect_mysql(); $ip = $REMOTE_ADDR;$date=date("Y-m-d");//insertion formulaire$req="INSERT comments_reportage (id,reportage,pseudo,message,date,ip) VALUES ('','$numero','$pseudo','$message','$date','$ip') ";//execution requête$res=mysql_query($req) or die('Erreur SQL !<br>'.$req.'<br>'.mysql_error());close_mysql($db); # pas d'erreur de code : traitement des éléments de formulaire... # ... une fois tout vérifié et mail envoyé on efface la session $_SESSION['code'] = ""; # redirection vers $confirmation où l'on affiche un message # grâce à la variable $_GET['mailok'] echo"Votre commentaire a bien été envoyé"; echo "<meta http-equiv='refresh' content='0';URL=supprimer.php?refresh=1'>";}?><form action="<?= $_SERVER['PHP_SELF']?>?id=<? echo"$numero"; ?>" method="post"><? if(strlen($erreur)) { ?><? echo "$erreur\n"?><? } ?> J'ai vraiment tout essayé et je comprends pas, cela à marcher et ne fonctionne plus... J'ai vraiment besoin d'aide. Merci EDIT : Portekoi : Merci d'utiliser le tag codebox pour les codes longs EDIT : Dudu: Merci d'écrire en français
xou Posté 14 Juin 2006 Posté 14 Juin 2006 (modifié) Bonsoir, excuse moi mais je viens de faire du code toute la journée donc je n'ai pas trop approfondi pour trouver tes erreurs. j'ai remarqué quelques erreurs: 1. $REMOTE_ADDR, pour obtenir l'ip c'est $_SERVER['REMOTE_ADDR'] mais il ne faut pas s'en tenir à cela car bien souvent le serveur ne renvoie rien, voila une petite fonction qui contournera ce problème dans la majeure partie des cas: function get_ip(){if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];}elseif(isset($_SERVER['HTTP_CLIENT_IP'])){$ip = $_SERVER['HTTP_CLIENT_IP'];}else{ $ip = $_SERVER['REMOTE_ADDR'];}return $ip;} 2. Fais attention à la façon dont tu insère tes variables, un exemple: $imagecode .= "<img src='".$rep_lettres.$_SESSION['img_'.$i]."' alt=''>"; Il y en a plein d'autres mais c'est surtout des fautes d'inatention, en relisant bien ton code tu va en trouver d'autres. Modifié 14 Juin 2006 par xou
Mumulafrite Posté 15 Juin 2006 Auteur Posté 15 Juin 2006 2. Fais attention à la façon dont tu insère tes variables, un exemple:$imagecode .= "<img src='".$rep_lettres.$_SESSION['img_'.$i]."' alt=''>"; Je vais parraitre pour un abrutit mais qu'est ce qu'il y a dans ce code? Je suis pas un pro et j'utilise un script trouvé sur le net Pense tu que ca puisse venir de là mon problême de formulaire?
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant