Bonjour, j'ai un formulaire de contact, avec différent filtrages avant l'envoi du mail, et j'aimerais que grâce aux cookies, le visiteur garde son message si il y a une erreur qui s'affiche. Mais le souci est qu'il me retourne "Undefined variable" au démarrage :
<?php
/* Si le formulaire est envoyé alors on fait les traitements */
if (isset($_POST['envoye']))
{
/* Récupération des valeurs des champs du formulaire */
if (get_magic_quotes_gpc())
{
$nom = stripslashes(trim($_POST['nom']));
$expediteur = stripslashes(trim($_POST['email']));
$sujet = stripslashes(trim($_POST['sujet']));
$message = stripslashes(trim($_POST['message']));
}
else
{
$nom = trim($_POST['nom']);
$expediteur = trim($_POST['email']);
$sujet = trim($_POST['sujet']);
$message = trim($_POST['message']);
}
/* Expression régulière permettant de vérifier si le
* format d'une adresse e-mail est correct */
$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
/* Expression régulière permettant de vérifier qu'aucun
* en-tête n'est inséré dans nos champs */
$regex_head = '/[\n\r]/';
/* Si le formulaire n'est pas posté de notre site on renvoie
* vers la page d'accueil */
//if($_SERVER['HTTP_REFERER'] != 'http://www.monsite.com/send_email.php')
//{
// header('Location: http://www.monsite.com/');
// }
/* On vérifie que tous les champs sont remplis */
if ( empty($nom)
|| empty($expediteur)
|| empty($sujet)
|| empty($message))
{
$alert = 'Tous les champs doivent être renseignés';
}
/* On vérifie que le format de l'e-mail est correct */
elseif (!preg_match($regex_mail, $expediteur))
{
$alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
}
/* On vérifie qu'il n'y a aucun header dans les champs */
elseif (preg_match($regex_head, $expediteur)
|| preg_match($regex_head, $nom)
|| preg_match($regex_head, $sujet))
{
$alert = 'En-têtes interdites dans les champs du formulaire';
}
/* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
elseif (!isset($_COOKIE['sent']))
{
/* Destinataire (votre adresse e-mail) */
$to = '[email protected]';
/* Construction du message */
$msg = 'Bonjour,'."\r\n\r\n";
$msg .= 'Ce mail a été envoyé depuis monsite.com par '.$civilite.' '.$nom."\r\n\r\n";
$msg .= 'Voici le message qui vous est adressé :'."\r\n";
$msg .= '***************************'."\r\n";
$msg .= $message."\r\n";
$msg .= '***************************'."\r\n";
/* En-têtes de l'e-mail */
$headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
/* Envoi de l'e-mail */
if (mail($to, $sujet, $msg, $headers))
{
$alert = 'E-mail envoyé avec succès';
/* On créé un cookie de courte durée (ici 120 secondes) pour éviter de
* renvoyer un mail en rafraichissant la page */
setcookie("sent", "1", time() + 120);
/* On détruit la variable $_POST */
unset($_POST);
}
else
{
$alert = 'Erreur d\'envoi de l\'e-mail';
}
}
/* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
else
{
unset($_POST);
}
}
?>
Et sur la même page, le formulaire :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Home</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="main">
<div class="blok_header">
<div class="header">
<div class="logo"><a href="index.html"><img src="images/logo.gif" width="359" height="99" border="0" alt="logo" /></a></div>
<div class="menu">
<ul>
<li><a href="index.php"><span>Accueil</span></a></li>
<li><a href="portfolio.php"><span>Produits</span></a></li>
<li><a href="about.php"><span>A propos de nous</span></a></li>
<li><a href="contact.php"><span>Contacts</span></a></li>
<li><a href="Livredor.php"><span>Livre d'or</span></a></li>
</ul>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
<div class="header_text_bg2">
<div class="header_text2">
<h2>Contact</h2>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
<div class="body_resize">
<div class="body">
<?php
if (!empty($alert))
{
echo '<p style="color:red">'.$alert.'</p>';
}
?>
<div class="left">
<h2>Où sommes-nous ?</h2>
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=12+rue+de+poulpatr%C3%A9&aq=&sll=48.22776,-4.455471&sspn=0.072044,0.209255&ie=UTF8&hq=&hnear=12+Rue+de+Poulpatr%C3%A9,+29160+Crozon,+Finist%C3%A8re,+Bretagne&ll=48.24669,-4.488424&spn=0.018005,0.052314&t=h&z=14&output=embed"></iframe><br /><small><a href="http://maps.google.fr/maps?f=q&source=embed&hl=fr&geocode=&q=12+rue+de+poulpatr%C3%A9&aq=&sll=48.22776,-4.455471&sspn=0.072044,0.209255&ie=UTF8&hq=&hnear=12+Rue+de+Poulpatr%C3%A9,+29160+Crozon,+Finist%C3%A8re,+Bretagne&ll=48.24669,-4.488424&spn=0.018005,0.052314&t=h&z=14" style="color:#0000FF;text-align:left">Agrandir le plan</a></small>
<p> </p>
<form action="contact.php" method="post" id="contactform" >
<ol>
<li>
<label for="nom">Nom<span class="red">*</span></label>
<input name="nom" class="text" value="<?php echo (isset($_POST['nom'])) ? $nom : '' ?>" />
</li>
<li>
<label for="email">E-mail <span class="red">*</span></label>
<input name="email" class="text" <input type="text" id="email" name="email"
value="<?php echo (isset($_POST['email'])) ? $expediteur : '' ?>" />
</li>
<li>
<label for="sujet">Sujet <span class="red">*</span></label>
<input type="text" id="sujet" name="sujet"
value="<?php echo (isset($_POST['sujet'])) ? $sujet : '' ?>" />
</li>
<li>
<label for="message">Message <span class="red">*</span></label>
<textarea id="message" name="message" cols="50" rows="6">
<?php echo (isset($_POST['message'])) ? $message : '' ?>
</textarea>
</li>
<li class="buttons">
<p><span>Les champs marqués d'un (*) sont obligatoires</span></p>
<input type="image" name="envoye" id="envoye" src="images/send.gif" class="send" />
<div class="clr"></div>
</li>
</ol>
</form>
</div>
<div class="right">
<h2>Nous contacter</h2>
<p>
<strong>Adresse</strong>: 12, rue de Poulpatré 29160 Crozon <BR/><BR/>
<strong>Telephone</strong>: 02 98 17 39 61 (de 8h30 à 18h) <BR/><BR/>
<strong>FAX</strong>: 02 98 17 39 62<BR/><BR/>
<strong>E-mail</strong>: [email protected]<BR/><BR/>
<strong>Jours d'ouverture des bureaux:</strong> Du lundi au vendredi. <BR/><BR/>
<strong>Horaires d'ouverture des bureaux:</strong> De 8h30 à 12h30<BR/><BR/>
</p>
<p> </p>
<div class="clr"></div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
</div>
<div class="FBG">
<div class="FBG_resize">
<div class="right">
</div>
<div class="left">
<h2>Contact</h2>
<ul>
<li><a href="livredor.php">Livre d'or</a></li>
<li><a href="contact.php">Localisation</a></li>
<li><a href="contact.php">Mail</a></li>
<li><a href="contact.php">Adresse</a></li>
</ul>
</div>
<div class="right">
<h2>What They Say</h2>
<p>
<img src="images/Guillemets_F.gif" alt="picture" width="24" height="18" />
"Il fait froid, parce que l'on regarde là où il n'y a pas de chaleur."
<img src="images/Guillemets_O.gif" alt="picture" width="24" height="18" />
</p>
<p><i><b>Alexandra David-Néel</i></b></a></p>
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
<div class="footer">
<div class="footer_resize"><a href="#"><img src="images/footer_logo.gif" alt="picture" width="214" height="84" border="0" /></a>
<p class="leftt">© Copyright GUIGNER Fabien tous droits réservés <br /></p>
<div class="clr"></div>
</div>
</div>
</body>
</html>
Quelqu'un aurait une idée de quoi faire pour pas qu'il les champs texte restent vides à l'affichage 1er du formulaire ?
Merci bien !
Bonjour, j'ai un formulaire de contact, avec différent filtrages avant l'envoi du mail, et j'aimerais que grâce aux cookies, le visiteur garde son message si il y a une erreur qui s'affiche. Mais le souci est qu'il me retourne "Undefined variable" au démarrage :
[php]<?php
/* Si le formulaire est envoyé alors on fait les traitements */
if (isset($_POST['envoye']))
{
/* Récupération des valeurs des champs du formulaire */
if (get_magic_quotes_gpc())
{
$nom = stripslashes(trim($_POST['nom']));
$expediteur = stripslashes(trim($_POST['email']));
$sujet = stripslashes(trim($_POST['sujet']));
$message = stripslashes(trim($_POST['message']));
}
else
{
$nom = trim($_POST['nom']);
$expediteur = trim($_POST['email']);
$sujet = trim($_POST['sujet']);
$message = trim($_POST['message']);
}
/* Expression régulière permettant de vérifier si le
* format d'une adresse e-mail est correct */
$regex_mail = '/^[-+.\w]{1,64}@[-.\w]{1,64}\.[-.\w]{2,6}$/i';
/* Expression régulière permettant de vérifier qu'aucun
* en-tête n'est inséré dans nos champs */
$regex_head = '/[\n\r]/';
/* Si le formulaire n'est pas posté de notre site on renvoie
* vers la page d'accueil */
//if($_SERVER['HTTP_REFERER'] != 'http://www.monsite.com/send_email.php')
//{
// header('Location: http://www.monsite.com/');
// }
/* On vérifie que tous les champs sont remplis */
if ( empty($nom)
|| empty($expediteur)
|| empty($sujet)
|| empty($message))
{
$alert = 'Tous les champs doivent être renseignés';
}
/* On vérifie que le format de l'e-mail est correct */
elseif (!preg_match($regex_mail, $expediteur))
{
$alert = 'L\'adresse '.$expediteur.' n\'est pas valide';
}
/* On vérifie qu'il n'y a aucun header dans les champs */
elseif (preg_match($regex_head, $expediteur)
|| preg_match($regex_head, $nom)
|| preg_match($regex_head, $sujet))
{
$alert = 'En-têtes interdites dans les champs du formulaire';
}
/* Si aucun problème et aucun cookie créé, on construit le message et on envoie l'e-mail */
elseif (!isset($_COOKIE['sent']))
{
/* Destinataire (votre adresse e-mail) */
$to = '
[email protected]';
/* Construction du message */
$msg = 'Bonjour,'."\r\n\r\n";
$msg .= 'Ce mail a été envoyé depuis monsite.com par '.$civilite.' '.$nom."\r\n\r\n";
$msg .= 'Voici le message qui vous est adressé :'."\r\n";
$msg .= '***************************'."\r\n";
$msg .= $message."\r\n";
$msg .= '***************************'."\r\n";
/* En-têtes de l'e-mail */
$headers = 'From: '.$nom.' <'.$expediteur.'>'."\r\n\r\n";
/* Envoi de l'e-mail */
if (mail($to, $sujet, $msg, $headers))
{
$alert = 'E-mail envoyé avec succès';
/* On créé un cookie de courte durée (ici 120 secondes) pour éviter de
* renvoyer un mail en rafraichissant la page */
setcookie("sent", "1", time() + 120);
/* On détruit la variable $_POST */
unset($_POST);
}
else
{
$alert = 'Erreur d\'envoi de l\'e-mail';
}
}
/* Cas où le cookie est créé et que la page est rafraichie, on détruit la variable $_POST */
else
{
unset($_POST);
}
}
?>
[/PHP]
Et sur la même page, le formulaire : [html]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Home</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div class="main">
<div class="blok_header">
<div class="header">
<div class="logo"><a href="index.html"><img src="images/logo.gif" width="359" height="99" border="0" alt="logo" /></a></div>
<div class="menu">
<ul>
<li><a href="index.php"><span>Accueil</span></a></li>
<li><a href="portfolio.php"><span>Produits</span></a></li>
<li><a href="about.php"><span>A propos de nous</span></a></li>
<li><a href="contact.php"><span>Contacts</span></a></li>
<li><a href="Livredor.php"><span>Livre d'or</span></a></li>
</ul>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
<div class="header_text_bg2">
<div class="header_text2">
<h2>Contact</h2>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
<div class="body_resize">
<div class="body">
<?php
if (!empty($alert))
{
echo '<p style="color:red">'.$alert.'</p>';
}
?>
<div class="left">
<h2>Où sommes-nous ?</h2>
<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.fr/maps?f=q&source=s_q&hl=fr&geocode=&q=12+rue+de+poulpatr%C3%A9&aq=&sll=48.22776,-4.455471&sspn=0.072044,0.209255&ie=UTF8&hq=&hnear=12+Rue+de+Poulpatr%C3%A9,+29160+Crozon,+Finist%C3%A8re,+Bretagne&ll=48.24669,-4.488424&spn=0.018005,0.052314&t=h&z=14&output=embed"></iframe><br /><small><a href="http://maps.google.fr/maps?f=q&source=embed&hl=fr&geocode=&q=12+rue+de+poulpatr%C3%A9&aq=&sll=48.22776,-4.455471&sspn=0.072044,0.209255&ie=UTF8&hq=&hnear=12+Rue+de+Poulpatr%C3%A9,+29160+Crozon,+Finist%C3%A8re,+Bretagne&ll=48.24669,-4.488424&spn=0.018005,0.052314&t=h&z=14" style="color:#0000FF;text-align:left">Agrandir le plan</a></small>
<p> </p>
<form action="contact.php" method="post" id="contactform" >
<ol>
<li>
<label for="nom">Nom<span class="red">*</span></label>
<input name="nom" class="text" value="<?php echo (isset($_POST['nom'])) ? $nom : '' ?>" />
</li>
<li>
<label for="email">E-mail <span class="red">*</span></label>
<input name="email" class="text" <input type="text" id="email" name="email"
value="<?php echo (isset($_POST['email'])) ? $expediteur : '' ?>" />
</li>
<li>
<label for="sujet">Sujet <span class="red">*</span></label>
<input type="text" id="sujet" name="sujet"
value="<?php echo (isset($_POST['sujet'])) ? $sujet : '' ?>" />
</li>
<li>
<label for="message">Message <span class="red">*</span></label>
<textarea id="message" name="message" cols="50" rows="6">
<?php echo (isset($_POST['message'])) ? $message : '' ?>
</textarea>
</li>
<li class="buttons">
<p><span>Les champs marqués d'un (*) sont obligatoires</span></p>
<input type="image" name="envoye" id="envoye" src="images/send.gif" class="send" />
<div class="clr"></div>
</li>
</ol>
</form>
</div>
<div class="right">
<h2>Nous contacter</h2>
<p>
<strong>Adresse</strong>: 12, rue de Poulpatré 29160 Crozon <BR/><BR/>
<strong>Telephone</strong>: 02 98 17 39 61 (de 8h30 à 18h) <BR/><BR/>
<strong>FAX</strong>: 02 98 17 39 62<BR/><BR/>
<strong>E-mail</strong>:
[email protected]<BR/><BR/>
<strong>Jours d'ouverture des bureaux:</strong> Du lundi au vendredi. <BR/><BR/>
<strong>Horaires d'ouverture des bureaux:</strong> De 8h30 à 12h30<BR/><BR/>
</p>
<p> </p>
<div class="clr"></div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
</div>
<div class="FBG">
<div class="FBG_resize">
<div class="right">
</div>
<div class="left">
<h2>Contact</h2>
<ul>
<li><a href="livredor.php">Livre d'or</a></li>
<li><a href="contact.php">Localisation</a></li>
<li><a href="contact.php">Mail</a></li>
<li><a href="contact.php">Adresse</a></li>
</ul>
</div>
<div class="right">
<h2>What They Say</h2>
<p>
<img src="images/Guillemets_F.gif" alt="picture" width="24" height="18" />
"Il fait froid, parce que l'on regarde là où il n'y a pas de chaleur."
<img src="images/Guillemets_O.gif" alt="picture" width="24" height="18" />
</p>
<p><i><b>Alexandra David-Néel</i></b></a></p>
</div>
<div class="clr"></div>
</div>
<div class="clr"></div>
</div>
<div class="footer">
<div class="footer_resize"><a href="#"><img src="images/footer_logo.gif" alt="picture" width="214" height="84" border="0" /></a>
<p class="leftt">© Copyright GUIGNER Fabien tous droits réservés <br /></p>
<div class="clr"></div>
</div>
</div>
</body>
</html>
[/html]
Quelqu'un aurait une idée de quoi faire pour pas qu'il les champs texte restent vides à l'affichage 1er du formulaire ?
Merci bien !