Formulaire mail PHP : confirmation d'envoi

[Résolu/Fermé]
Signaler
Messages postés
156
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
22 mai 2016
-
Messages postés
156
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
22 mai 2016
-
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 !!

7 réponses

Messages postés
4347
Date d'inscription
samedi 15 mars 2008
Statut
Contributeur
Dernière intervention
2 novembre 2013
1 404
salut,

remplace ta ligne :

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


par :

header('Location: ar_contact.htm');
9
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41713 internautes nous ont dit merci ce mois-ci

Messages postés
149
Date d'inscription
samedi 13 décembre 2008
Statut
Membre
Dernière intervention
20 juillet 2009
28
	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).
Messages postés
156
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
22 mai 2016
37
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é...
Messages postés
149
Date d'inscription
samedi 13 décembre 2008
Statut
Membre
Dernière intervention
20 juillet 2009
28
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).
Messages postés
156
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
22 mai 2016
37
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 !!!
Messages postés
156
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
22 mai 2016
37
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...
Messages postés
156
Date d'inscription
jeudi 25 août 2005
Statut
Membre
Dernière intervention
22 mai 2016
37
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...