le 08/07/2008 à 12:50
fran6
Bjr, J'ai téléchargé un captcha parce que j'en ai mare des spams dans mon livre d'or. Le captcha fonctionne bien sauf que je n'arrive plus à ajouter des données dans ma base de donnée à partir du formulaire. Il y a qlq chose qui ne marche plus dans mon code php. Quelqu'un est-il assez gentil pour me donner un PETIT coup de main .
Voici le code du livre d'or:
Voici le code du livre d'or:
<?php
session_start();
if(($_SESSION['security_code'] == $_POST['security_code']) && (!empty($_SESSION['security_code'])) ) {
// Insert you code for processing the form here, e.g emailing the submission, entering it into a database.
if (isset($_POST['go']) && $_POST['go']=='Signer') {
if ((isset($_POST['name'])) && (isset($_POST['email'])) && (isset($_POST['comment']))) {
// si les 3 variables ne sont pas vides, et si l'adresse E-mail est valide, alors, et seulement dans ce cas, on fera notre insertion dans la base
if ((!empty($_POST['name'])) && (!empty($_POST['email'])) && (!empty($_POST['comment']))) {
// on verifie le format de l'adresse E-mail saisie
$test_mail = eregi ('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)+$', $_POST['email']);
if ($test_mail) {
// on se connecte à notre base
$base = mysql_connect ('localhost', 'login', 'pswd');
mysql_select_db ('my_bdd', $base);
// on prepare notre requête d'insertion des données
$sql = 'INSERT INTO livre_or VALUES("", "'.mysql_escape_string($_POST['name']).'", "'.mysql_escape_string($_POST['email']).'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['comment']).'")';
// on lance la requête
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
// on ferme la connexion à la base de données
mysql_close();
// on redirige le visiteur vers l'accueil du livre d'or
header('location: index.php');
// on termine le script courant
exit();
}
else {
$erreur = 'Votre adresse E-mail est invalide.';
}
}
else {
$erreur = 'Au moins un des champs est vide.';
}
}
else {
$erreur = 'Les variables nécessaires au script ne sont pas définies.';
}
}
// on entre dans le cas où l'un des trois (au moins) champs n'a pas été rempli ou si l'adresse E-mail n'a pas été validée (en particulier, lorsque le visiteur charge pour la première fois cette page, vu que les 3 champs sont vides, le formulaire s'affichera). On remarque également que l'on met la valeur de chaque champs dans le value (c'est cela qui fait que si le visiteur ne remplit pas entièrement le formulaire et qu'il clique sur "Signer", et bien lorsqu'il sera redirigé vers le formulaire, ce qu'il aura déjà saisi sera conservé
unset($_SESSION['security_code']);
} else {
// Insert your code for showing an error message here
echo 'Erreurs internes';
}
?>
<html>
<head>
<title>My guestbook</title>
</head>
<body>
<form action="insert_signature.php" method="post">
<table>
<tr><td width="97">
<span class="gras">Name:</span>
</td><td colspan="2">
<input type="text" name="name" maxlength="30" size="50" value="<?php if (isset($_POST['name'])) echo htmlentities(trim($_POST['name'])); ?>">
</td></tr><tr><td>
<span class="gras">E-mail address:</span>
</td><td colspan="2">
<input type="text" name="email" maxlength="50" size="50" value="<?php if (isset($_POST['email'])) echo htmlentities(trim($_POST['email'])); ?>">
</td></tr><tr><td>
<span class="gras">Your comment:</span>
</td><td colspan="2">
<textarea name="comment" cols="50" rows="10"><?php if (isset($_POST['comment'])) echo htmlentities(trim($_POST['comment'])); ?></textarea>
</td></tr>
<tr>
<td><span class="gras">Security code :</span></td>
<td width="86"><label>
<input name="security_code" type="text" tabindex="4" size="5" maxlength="5">
</label></td>
<td width="231"><img src="CaptchaSecurityImages.php?width=100&height=40&characters=5" /></td>
</tr>
<tr><td><td colspan="2" align="right">
<input type="submit" name="submit" value="submit">
</td></tr></table>
</form>
<?php
if (isset($erreur)) echo '<br /><br />',$erreur;
?>
</body>
</html>