Aller au contenu

pb sur formulaire anti spam


Mumulafrite

Sujets conseillés

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 formulaire
if($_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 :blush: )

Si une personne pouvait me filer un coup de main ce serait super.

Merci d'avance

Modifié par Dudu
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 correspondance
if($_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

Lien vers le commentaire
Partager sur d’autres sites

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é par xou
Lien vers le commentaire
Partager sur d’autres sites

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?

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...