Rechercher : dans
Par :

Formulaire mail PHP : confirmation d'envoi

Dernière réponse le 4 fév 2009 à 20:13:14 la chicane, le 4 fév 2009 à 16:29:32 
 Signaler ce message aux modérateurs

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 !!
Configuration: Windows XP (pc fixe) + windows Vista (portable)
Internet Explorer 6.0 (pc fixe) + IE 7 (portable)

Meilleures réponses pour « Formulaire mail PHP : confirmation d'envoi » dans :
[CCM] Je ne reçois pas le mail de confirmation Voir Si vous vous êtes inscrit à CommentCaMarche mais ne recevez pas l'e-mail de confirmation (pour valider votre inscription), lisez ceci : 1. L'adresse e-mail que vous avez fournie est d'AOL 2. Autres cas 3. Pour recevoir à nouveau l'e...
[Langages] Envoyer un mail avec pièce jointe VoirLes mails, tout comme les pages web, sont livrés avec des en-têtes (headers en anglais). Ces en-têtes servent à donner quelques détails nécessaires comme l'adresse du destinataire, celle de l'envoyeur, la date de l'envoi, le sujet du mail etc. Elles...
[Outlook/ThunderBird/Incredimail] Envoi/Réception de mail VoirVous avez des problèmes d'envoi ou de réception de mail dans votre client de messagerie ? Cet article va vous aider à diagnostiquer le problème. 1. Introduction à la messagerie 2. Problèmes d'envoi de mail 3. Problèmes de réception de...
[PHP] Fonction mail() VoirLa fonction mail() est bloquée chez certains des hébergeurs gratuits pour des raisons de sécurité (afin d'éviter le spam notamment), l'adresse ip de la machine qui a demandé le script sera alors indiquée dans le header 'X-MM-Mail-From-IP'. renseignez...
PHP - Mail et fonctions réseau VoirPHP étant un langage consacré au Web, il possède bien évidemment des fonctions lui permettant de communiquer avec le "monde extérieur" à l'aide de fonctions standards. Le service le plus utilisé sur Internet étant la messagerie électronique, il est...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...

1

chupa23, le 4 fév 2009 à 16:39:37

	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).

Répondre à chupa23

2

Ricky38, le 4 fév 2009 à 16:41:33

Salut,

remplace ta ligne :

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


par :

header('Location: ar_contact.htm');

Répondre à Ricky38

3

la chicane, le 4 fév 2009 à 16:48:17

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é...

Répondre à la chicane

4

chupa23, le 4 fév 2009 à 16:54:39

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).

Répondre à chupa23

5

la chicane, le 4 fév 2009 à 16:54:50

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 !!!

Répondre à la chicane

6

la chicane, le 4 fév 2009 à 19:57:34

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...

Répondre à la chicane

7

 la chicane, le 4 fév 2009 à 20:13:14

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...

Répondre à la chicane