Bonjour, j'ai réalisé un livre d'or pour mon site web en m'inspirant de codes "touts faits" car je ne maitrise pas totalement le php...
Le livre d'or fonctionne.
Le problème c'est le spam ! J'ai voulu réaliser un antispam affichant une image avec un texte à recopier.
Le code me tire l'image aléatoirement et l'affiche, mais l'action if ne fonctionne pas ! Pouvez vous m'aider à trouver l'erreur ? J'ai déjà essayé tellement de combinaisons qui ne fonctionnent pas...
<p>Laissez nous un message !</p>
<p>
Pseudo : <br /> <input name="pseudo" /><p />
Message :<br />
<textarea name="message" rows="8" cols="35"></textarea> <br />
</p>
<p>Anti-spam : </p>
<p><label for="code"></label><img src="<?php echo $img_nospam['img']; ?>" width="98" height="41"" /><br /><input type="text" name="code" id="code" /><input type="hidden" id="image" name="image" value="<?php echo $img_nospam['num']; ?>" /></p>
<input type="submit" value="Envoyer" />
</form>
<p align="left" class="pages">
<?php
function NoSpamQuestion($mode = 'ask', $answer = 0)
{
$array_pictures = array(); $j = 0;
$array_pictures[$j]['num'] = $j;
$array_pictures[$j]['img'] = "as1.jpg";
$array_pictures[$j]['question'] = "Recopiez le nom de l'instrument inscrit sur l'image";
$array_pictures[$j]['answer'] = "batterie";
$j++;
$array_pictures[$j]['num'] = $j;
$array_pictures[$j]['img'] = "as2.jpg";
$array_pictures[$j]['question'] = "Recopiez le nom de l'instrument inscrit sur l'image";
$array_pictures[$j]['answer'] = "clavier";
$j++;
$array_pictures[$j]['num'] = $j;
$array_pictures[$j]['img'] = "as3.jpg";
$array_pictures[$j]['question'] = "Recopiez le nom de l'instrument inscrit sur l'image";
$array_pictures[$j]['answer'] = "basse";
$j++;
if ($mode != 'ans')
{
// on est en mode 'tirer au sort', on tire une image aléatoire
$lambda = rand(0, count($array_pictures)-1);
return $array_pictures[$lambda];
}
else
{
// on demande une vraie réponse
foreach($array_pictures as $i => $array)
{
if ($i == $answer)
{
return $array;
break;
};
};
}; // Fin if ($mode != 'ans')
};
?>
<?php
// on tire au sort une question
$img_nospam = NoSpamQuestion();
?>
<?php
// on ne traite le formulaire que si le bouton submit a été cliqué
if ($_POST['submit'])
{
// on compare la 'vraie' réponse et celle du visiteur
if ($code != strtolower($img_nospam['answer']))
{
// le formulaire s'arrête ici
echo "<p>Vous n'avez pas répondu correctement à la question ....</p>";
}
else
{
mysql_connect("localhost", "**********", "**********");
mysql_select_db("coursphp");
$pseudo = htmlentities($_POST['pseudo'], ENT_QUOTES); // On utilise htmlentities par mesure de sécurité
$message = htmlentities($_POST['message'], ENT_QUOTES); // De même pour le message
$message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />
// On peut enfin enregistrer )
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
mysql_close();
};
};
?>
Merci beaucoup pour votre aide !
-----