oui.c'est gênant, est ce normal ?
si tu veut pré remplir le formulaire il faut utiliser l'attribut value des inputs et tester si le champ existe dans le tableau $_POST et le cas échéant l'afficher.
@+
Si tu "oublies" de remplir un des champs, tu as le même problème, non ?re
Alors après quelques nouveaux essais l'affichage se fait très bien, par contre j'ai fait un test sur un message très long, en me trompant sur le mot à recopier, le message :"le captcha n'est pas bon " apparaît , mais le message initial s'efface et je suis obligé de le refaire en entier. c'est gênant, est ce normal ?
<?php session_start();
require('captcha.php');
// 0. Initialisation des variables
$erreur = '';
$pseudo = '';
$message = '';
$captcha = '';
// On ne fait ce traitement que si on a envoyé le formulaire =>
if ( !empty($_POST) ) {
// 1. On vérifie que les champs sont renseignés
foreach ($_POST as $var => $val) {
if ( empty($val) ) {
$erreur .= 'Veuillez renseigner le champ '.$var.'<br />';
}
else {
// Un peu délicat : on met le contenu du champ dans la variable 'nom du champ'
// $$var => $<nom du champ>.
$$var = htmlspecialchars(stripslashes($val));
}
}
// Si tous les champs sont renseignés ($erreur = '')
// 2. On teste le captcha
if ($erreur == '' && $_POST['captcha'] != $_SESSION['captcha'] ) {
$erreur .= "Le captcha n'est pas bon<br />";
}
// 3. SI tout est OK ($erreur = '') on fait l'insertion en base
if ($erreur == '') {
mysql_connect("localhost", "root", "");
mysql_select_db("test");
$message = nl2br($message);
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
}
}
?>
Pour ton formulaire :
<form method="post" action="test.php">
<p>Mon site vous plaît ? Laissez-moi un message !</p>
<?php if ( !empty($erreur) ) echo "<p class='erreur'>$erreur</p>";?>
<p>
Pseudo : <input name="pseudo" value="<?php echo $pseudo;?>" /><br />
Message :<br />
<textarea name="message" rows="8" cols="35"><?php echo $message;?></textarea><br />
<label for="captcha">Recopiez le mot : "<?php echo '123'; ?>"</label>
<input type="text" name="captcha" id="captcha" /><br />
<input type="submit" value="envoyer" />
</p>
</form><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<title>Livre d'or</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
</head>
<body>
<form method="post" action="test.php">
<p>Mon site vous plaît ? Laissez-moi un message !</p>
<?php if ( !empty($erreur) ) echo "<p class='erreur'>$erreur</p>";?>
<p>
Pseudo : <input name="pseudo" value="<?php echo $pseudo;?>" /><br />
Message :<br />
<textarea name="message" rows="8" cols="35"><?php echo $message;?></textarea><br />
<label for="captcha">Recopiez le mot : "<?php echo '123'; ?>"</label>
<input type="text" name="captcha" id="captcha" /><br />
<input type="submit" value="envoyer" />
</p>
</form>
<?php session_start();
require('captcha.php');
// 0. Initialisation des variables
$erreur = '';
$pseudo = '';
$message = '';
$captcha = '';
// On ne fait ce traitement que si on a envoyé le formulaire =>
if ( !empty($_POST) ) {
// 1. On vérifie que les champs sont renseignés
foreach ($_POST as $var => $val) {
if ( empty($val) ) {
$erreur .= 'Veuillez renseigner le champ '.$var.'<br />';
}
else {
// Un peu délicat : on met le contenu du champ dans la variable 'nom du champ'
// $$var => $<nom du champ>.
$$var = htmlspecialchars(stripslashes($val));
}
}
// Si tous les champs sont renseignés ($erreur = '')
// 2. On teste le captcha
if ($erreur == '' && $_POST['captcha'] != $_SESSION['captcha'] ) {
$erreur .= "Le captcha n'est pas bon<br />";
}
// 3. SI tout est OK ($erreur = '') on fait l'insertion en base
if ($erreur == '') {
mysql_connect("localhost", "root", "");
mysql_select_db("test");
$message = nl2br($message);
mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "')");
}
}
?>
</body>
</html>Re.j'ai essayer ton script, mais ça ne marche pas du tout