Formulaire mail PHP : confirmation d'envoi

Résolu/Fermé
la chicane Messages postés 156 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 22 mai 2016 - 4 févr. 2009 à 16:29
la chicane Messages postés 156 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 22 mai 2016 - 4 févr. 2009 à 20:13
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("&#039;","'",$message);
			$message = str_replace("&#8217;","'",$message);
			$message = str_replace("&quot;",'"',$message);
			$message = str_replace('<br>','',$message);
			$message = str_replace('<br />','',$message);
			$message = str_replace("<","<",$message);
			$message = str_replace(">",">",$message);
			$message = str_replace("&amp;","&",$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 !!
A voir également:

7 réponses

Ricky38 Messages postés 4347 Date d'inscription samedi 15 mars 2008 Statut Contributeur Dernière intervention 2 novembre 2013 1 458
4 févr. 2009 à 16:41
salut,

remplace ta ligne :

echo '<p>'.$message_envoye.'</p>'."\n";


par :

header('Location: ar_contact.htm');
9
chupa23 Messages postés 149 Date d'inscription samedi 13 décembre 2008 Statut Membre Dernière intervention 20 juillet 2009 28
4 févr. 2009 à 16:39
	if (mail($cible, $objet, $message, $headers))
			{
header('Location: mapage.php');
			}


Sans avoir tester , je pense que celle devrait marcher , après tu as plusieurs possibilité pour une redirection .Ou tu peux simplement modifier ton message d'origine pour faire quelque chose de mieux(avec un css derriere par ex).
1
la chicane Messages postés 156 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 22 mai 2016 37
4 févr. 2009 à 16:48
Merci Chupa et Ricky...
je viens d'essayer vos solutions... et cela donne ceci :

"Error 404 - Not found
Le fichier requis n'a pas été trouvé. Il peut s'agir d'une erreur technique. Veuillez réessayer ultérieurement. Si vous ne pouvez pas accéder au fichier après plusieurs tentatives, cela signifie qu'il a été supprimé.
"

et bien sur, le message n'est pas envoyé...
0
chupa23 Messages postés 149 Date d'inscription samedi 13 décembre 2008 Statut Membre Dernière intervention 20 juillet 2009 28
4 févr. 2009 à 16:54
Erreur 404 - Fichier introuvable , c'est a dire qu'il est orienté vers une page qui n'existe pas , tu as mis quoi exactement ici : 'Location: mapage.php' -> mapage.php est a remplacé par ta page vers ou tu souhaite être redirigé.

Et si le message n'est pas envoyé , il doit y a voir une erreur avant la redirection (l'envoie étant avant la redirection).
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
la chicane Messages postés 156 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 22 mai 2016 37
4 févr. 2009 à 16:54
Youpeeee !!!!!!!!
finalement, c'est bon... j'ai recopié le code et ai relu scrupuleusement... j'avais du louper qqchose la première fois !!!
Pour l'instant, je ne recois pas le message... j'attends un peu...
Je donnerai des nouvelles...

En attendant, merci infiniment à vous deux !!!
0
la chicane Messages postés 156 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 22 mai 2016 37
4 févr. 2009 à 19:57
je confirme... ça marche impec !!!

merci encore !

si j'abusais... le code pour envoyer les messages à quelqu'un en copie ??

en haut de ma page PHP j'ai

$destinataire = 'mon.adresse@monfai.com';


j'ai essayé comme ça :

$destinataire = 'mon.adresse@monfai.com,autre.adresse@sonfai.com';


mais cela me génère une erreur...
0
la chicane Messages postés 156 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 22 mai 2016 37
4 févr. 2009 à 20:13
bon, j'y suis arrivée... pourtant le code est exactement le même...
mais ça fonctionne...

Je clos ce post... je vous remercie tous pour votre aide !!!

à la prochaine...
0