Quand un formulaire dûment rempli ne veut pas s'éclipser
Posté : 31 mai 2006, 17:04
Salut à tous!
Je suis en train de préparer une page d'envoi de message en PHP, avec confirmation visuelle.
Lorsque les champs obligatoires sont remplis et que les champs à confirmation confirment bien ceux qu'ils doivent confirmer, le formulaire doit en principe céder à la place à un message disant que le message a été envoyé. Or, quand je valide le valide, une fois les conditions ci-dessus remplies, le formulaire s'affiche à nouveau.
Voici le fichier en question.
Je suis en train de préparer une page d'envoi de message en PHP, avec confirmation visuelle.
Lorsque les champs obligatoires sont remplis et que les champs à confirmation confirment bien ceux qu'ils doivent confirmer, le formulaire doit en principe céder à la place à un message disant que le message a été envoyé. Or, quand je valide le valide, une fois les conditions ci-dessus remplies, le formulaire s'affiche à nouveau.
Voici le fichier en question.
<?php
session_start();
// Paramètres du courriel
$destinataire='[email protected]';
$courriel=(!isset($_POST['courriel']))? '': $_POST['courriel'];
$courriel_confirmation=(!isset($_POST['courriel_confirmation']))? '': $_POST['courriel_confirmation'];
$objet=(!isset($_POST['objet']))? '': $_POST['objet'];
$message=(!isset($_POST['message']))? '': $_POST['message'];
$en_tete='From: '.$courriel.'\nReply-to: '.$courriel.'\n';
$en_tete=str_replace('\r\n', '\n', $en_tete);
// Envoi du courriel
if (isset($_POST['courriel']) && isset($_POST['courriel_confirmation']) && isset($_POST['message']) && isset($_POST['saisie']) && !empty($courriel) && !empty($courriel_confirmation) && !empty($message) && !empty($saisie) && $saisie==$_SESSION['confirmation_visuelle'] && $courriel_confirmation==$courriel){
mail($destinataire, htmlentities($objet), stripslashes(htmlentities($message)), $en_tete);
$avis='Votre message a bien été envoyé. Cliquez <a href="index.php" title="Contact">ici</a> pour revenir à l’accueil.';
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta http-equiv="imagetoolbar" content="no">
<title>Contact</title>
<link href="css/styles.css" rel="stylesheet" type="text/css">
<link href="css/corps.css" rel="stylesheet" type="text/css">
</head>
<body>
<div id="page">
<?php
require ("pages/en-tete.php");
?>
<div id="corps">
<h1>CONTACT</h1>
<?php
if (!isset($_POST['courriel']) || empty($courriel) || !isset($_POST['courriel_confirmation']) || empty($courriel_confirmation) || $courriel_confirmation!=$courriel || !isset($_POST['message']) || empty($message) || !isset($_POST['saisie']) || empty($saisie) || $saisie!=$_SESSION['confirmation_visuelle']){
// Afficher le formulaire
?>
<p>Pour écrire au webmestre, veuillez remplir le formulaire ci-dessous. Les champs accompagnés d’un * sont obligatoires.</p>
<form action="contact.php" method="post" name="contact" id="contact">
Votre adresse électronique* :<br>
<input name="courriel" type="text" id="courriel" size="70" value="<?php echo $courriel ?>"><br>
Confirmez votre adresse électronique* :<br>
<input name="courriel_confirmation" type="text" id="courriel_confirmation" size="70"><br>
Objet de votre message :<br>
<input name="objet" type="text" id="objet" size="70" value="<?php echo $objet ?>"><br>
Votre message* :<br>
<textarea name="message" cols="60" rows="6" id="message"><?php echo $message ?></textarea><br>
Veuillez saisir les caractères apparaissant ci-dessous*.<br>
<img src="confirmation-visuelle.php" alt="Confimation visuelle" title="Confirmation visuelle"><br>
<input name="saisie" type="text" id="saisie"><br>
<input name="annul" type="reset" id="annul" value="Annuler" onClick="window.location.href='index.php'">
<input name="envoi" type="submit" id="envoi" value="Envoyer">
</form>
<?php
}
else{
?>
<p><?php echo $avis ?></p>
<?php
}
?>
</div>
<?php
require ("pages/pied.php");
?>
</div>
</body>
</html>
Le script permettant de générer le code de confirmation visuelle.
<?php
session_start();
$caracteres='abcdefghijklnmopqrstuvwxyz0123456789';
$code='';
mt_srand((double)microtime()*1000000);
for ($i=1; $i<=8; $i++){
$code.=$caracteres[mt_rand(0, 35)];
}
$_SESSION['confirmation_visuelle']=$code;
header("Content-type: image/png");
$image_confirmation=imagecreate(160, 40);
$blanc=imagecolorallocate($image_confirmation, 200, 200, 200);
$noir=imagecolorallocate($image_confirmation, 0, 0, 0);
$bleu=imagecolorallocate($image_confirmation, 51, 102, 255);
imagettftext($image_confirmation, 20, 0, 0, 30, $noir, "sncf.ttf", $code);
$ordonnee=array(5, 10, 15, 20, 25, 30, 35);
for ($i=0; $i<sizeof($ordonnee); $i++){
imagefilledrectangle($image_confirmation, 0, $ordonnee[$i]-0.5, 160, $ordonnee[$i]+0.5, $bleu);
}
imagepng($image_confirmation);
//imagedestroy($image_confirmation);
?>
Et si vous voulez la police utilisée, elle est disponible ici.