Bonjour la compagnie !!!
Comme je vous le disais dans l'autre post, j'ai réussi à faire migrer mon site du serveur Windows, vers le serveur Linux.
Me voilà donc prête à utiliser un formulaire en PHP.
Le formulaire est créé, le code PHP est prêt et tout fonctionne (si si, je vous assure !!!)
Le formulaire a même la tête que je voulais qu'il ait... ;-)
En revanche, à l'envoi du formulaire, plutôt qu'une vague phrase "votre message a bien été envoyé" dans une fenêtre blanche et vide comme actuellement, j'aimerais que mon visiteur arrive sur une petite page de "remerciements" que j'ai préparé.
Pourriez vous me dire comment coder pour avoir ce résultat ??
Voici mon code PHP :
<?php
// destinataire du mail
$destinataire = 'mon.adresse@monfai.com';
// copie à l'émetteur
$copie = 'oui'; // 'oui' ou 'non'
// Messages de confirmation du mail
$message_envoye = 'votre message a bien été envoyé';
$message_non_envoye = "L'envoi du mail a échoué pour une raison inconnue, veuillez réessayer.";
$message_erreur_formulaire = "Attention, pour continuer, vous devez <a href=\"contact.html\">envoyer le formulaire</a>.";
$message_formulaire_invalide = "Vérifiez que tous les champs soient bien remplis et que l'email soit sans erreur.";
// test d'envoi du formulaire
if (!isset($_POST['envoi']))
{
// si echec
echo '<p>'.$message_erreur_formulaire.'</p>'."\n";
}
else
{
/*
* nettoyer et enregistrer le message
*/
function Rec($text)
{
$text = trim($text); // supprime les espaces blancs en début et en fin de texte
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}
// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};
/*
* vérif email
*/
function IsEmail($email)
{
$pattern = "^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.)+[a-z]{2,7}$";
return (eregi($pattern,$email)) ? true : false;
};
// formulaire envoyé, on récupère tous les champs.
$nom = (isset($_POST['nom'])) ? Rec($_POST['nom']) : '';
$prenom = (isset($_POST['prenom'])) ? Rec($_POST['prenom']) : '';
$telephone = (isset($_POST['telephone'])) ? Rec($_POST['telephone']) : '';
$email = (isset($_POST['email'])) ? Rec($_POST['email']) : '';
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
// vérification des variables et de l'email ...
$email = (IsEmail($email)) ? $email : '';
if (($nom != '') && ($prenom != '') && ($telephone != '') && ($email != '') && ($message != ''))
{
// envoie du mail après consitution
$headers = 'From: '.$nom.' '.$prenom.' <'.$email.'>' . "\r\n";
// copie à l'expéditeur ?
if ($copie == 'oui')
{
$cible = $destinataire.','.$email;
}
else
{
$cible = $destinataire;
};
// Remplacement de certains caractères spéciaux
$message = str_replace("'","'",$message);
$message = str_replace("’","'",$message);
$message = str_replace(""",'"',$message);
$message = str_replace('<br>','',$message);
$message = str_replace('<br />','',$message);
$message = str_replace("<","<",$message);
$message = str_replace(">",">",$message);
$message = str_replace("&","&",$message);
/* ancien code qui fonctionnait
$message = $message. "\n".'tel '.$telephone;
*/
$message = 'Nom : '.$nom."\n".'Prénom : '.$prenom."\n".'Téléphone : '.$telephone."\n"."\n".'Message : '.$message;
// Envoi du mail
if (mail($cible, $objet, $message, $headers))
{
echo '<p>'.$message_envoye.'</p>'."\n";
}
else
{
echo '<p>'.$message_non_envoye.'</p>'."\n";
};
}
else
{
// une des 3 variables (ou plus) est vide ...
echo '<p>'.$message_formulaire_invalide.' <a href="#" OnClick="history.back()">Retour au formulaire</a></p>'."\n";
};
}; // fin du if (!isset($_POST['envoi']))
?>
Mon code html :
<form id="contact" method="post" action="traitement_formulaire.php">
<p class="Style19">Si vous souhaitez être recontacté, n'oubliez pas de me transmettre votre adresse mail.</p>
<table width="500" cellpadding="5" cellspacing="5">
<tr>
<td><span class="Style18 Style19">Nom</span></td>
<td><input type="text" id="nom" name="nom" tabindex="1" style="background-color:#CCCCCC"/></td>
</tr>
<tr>
<td><span class="Style18 Style19">Prénom</span></td>
<td><input type="text" id="prenom" name="prenom" tabindex="2" style="background-color:#CCCCCC"/></td>
</tr>
<tr>
<td><span class="Style18 Style19">N° de Téléphone</span></td>
<td><input type="text" id="telephone" name="telephone" tabindex="3" style="background-color:#CCCCCC"/></td>
</tr>
<tr>
<td><span class="Style18 Style19">Adresse mail</span></td>
<td><input type="text" id="email" name="email" tabindex="4" style="background-color:#CCCCCC"/></td>
</tr>
<tr>
<td><span class="Style18 Style19">Message</span></td>
<td><textarea id="message" name="message" tabindex="5" cols="40" rows="20"
style="background-color:#CCCCCC"></textarea></td>
</tr>
<tr>
<td><span class="Style19"></span></td>
<td><input type="submit" name="envoi" value="Envoyer" /></td></tr>
</table>
</form>
Ce que j'aimerais, c'est remplacer cette variable :
$message_envoye = 'votre message a bien été envoyé';
par une redirection vers la page "ar_contact.htm", qui se trouve dans le même répertoire, et qui s'afficherait dans la même fenêtre navigateur.
SI quelqu'un a la solution... merci beaucoup !!
Configuration: Windows XP (pc fixe) + windows Vista (portable)
Internet Explorer 6.0 (pc fixe) + IE 7 (portable)