Bonjour,

J'ai un formulaire de contact sur mon site dans une page contact qui marche très bien ( à savoir -pour le point qui me préoccupe- une fois le formulaire remplit et envoyé, la page se rafraîchit sur une page ...contact.html?send=ok#page-contact et un message qui confirme l'envoie apparaît).

J'ai également ce même formulaire de contact dans le footer de toutes mes pages (avec un document php différent de la page de contact -le code est le même mis à part la ligne location).Et bien que l'envoie fonctionne (je reçois bien le mail), le rafraîchissement et le message de confirmation d'envoie ne fonctionne pas. En effet, après envoie du message je suis automatiquement redirigée sur la page d'accueil (et sans message de confirmation d'envoie).

Le problème vient de ma ligne "location" (du moins j'imagine puisque c'est le seul élément changeant et qui ne fonctionne pas), mes connaissances en php étant plus proche du négatif que du zéro j'ai essayé de chercher à gauche à droite sans vraiment trouver de solutions.
J'en viens donc à mes questions Smiley lol
- Tous d'abord, est-il bien possible de faire ça ? (avoir un formulaire sur plusieurs pages, qui une fois remplit et envoyé, rafraîchirait le page où il se trouve en affichant un message donné, le tous gérer par un seul formulaire php)
- Si oui : comment pourrais-je faire pour que ça marche ?

Mon php
<?php
	$TO = "mail";
	$from = $_POST['nom'].', '.$_POST['email'];

	$h  = "De: " . $from;

	$subject = 'Sujet : '.$_POST['objet']; 
	
$message = "From ".$_POST['email']." ".$_POST['message'];
	/*while (list($key, $val) = each($_POST)) {
	  $message .= "$key : $val\n";
	}*/

	mail($TO, $subject, $message, $h);

	header("Location: ../[b]#.html?send=ok#page-contact[/b]"); 
	?>


Je ne sais pas si j'ai été très claire, auquel cas je m'en excuse.
Merci d'avance !
Bonne soirée
Salut,

Pour ta première question : oui c'est tout à fait possible et c'est très courant.
Pour ta deuxième question : il faut revoir ta page vers laquelle tu rediriges.

Je ne vois pas à quoi sert le "#" avant le .html ?

Je suppose que les "<b></b>" (à remplacer par des "[]") ne sont pas dans ton code d'origine et ce n'est que ta tentative de mettre un élément en gras sur ce forum...?

Si ton formulaire est dans un dossier genre http://www.tonsite.com/contact/form.php et que ta page contact.html est placée comme http://www.tonsite.com/contact.html alors il faut une redirection de ce type dans ton fichier form.php après l'envoi de l'email :
header("Location: ../contact.html?send=ok#page-contact");

Sinon, une autre chose très importante : la sécurisation minimale des données reçus de l'utilisateur : ne te sert jamais d'une variable $_GET, $_COOKIE ou $_POST sans au moins la protéger par htmlspecialchars() :
$nom = htmlspecialchars($_POST['name']);

Modifié par MatthieuR (28 Mar 2016 - 00:14)