Bonsoir,
J'ai créé un formulaire de contact, sauf que j'ai un petit souci, je voudrais qu'une fois la page est envoyée, le message "Votre message a été envoyé" est affiché pour le visiteur, mais quelque seconde après, la page se redirige vers la même page avec l'url indiqué dans le code, enfin la même page se rafrachit si vous voulez. Mais je n'arrive pas à obtenir le résultat avec ce code, je ne sais pas où placer les bons éléments.
<?php
if (isset($_POST['message'])) {
$position_arobase = strpos($_POST['email'], '@');
if ($position_arobase === false){
echo 'Votre email doit comporter un arobase';
}
else {
$retour = mail('monadresse@exemple.com', 'Envoi depuis page contact', $_POST['message'], 'From: ' . $_POST['email']);
if($retour){
echo 'Votre message a été envoyé';
}
else{
echo 'Erreur';
}
}
if(isset($_POST['submit'])){
echo 'Votre message a été envoyé';
header("location:ma_pageContact.php");
}
}
?>
Merci pour vos conseils
Bonne soirée
C'est cool un message flash, mais il faut utiliser Jquery, je voudrais un truc simple qui fonctionne correctement.
Mais j'ai trouvé, c'est :
<?php header("Refresh: 4;url=http://page_voulue.fr"); ?>
(4 secondes avant la redirection) ça a marché.
Merci en tout cas d'avoir pris le temps de lire mes posts et vos conseils.
Le rafraichissement de la page se fait car tu l'as demandé, enfin ce n'est pas un rafraicissement, c'est plutot une redirection vers la même page:
header("location:ma_pageContact.php");
Retires juste cette ligne et ce sera bon ;)
Ensuite il y'a un problème dans le code :/
Si tu as un post message et submit, les deux echo "Votre message a été envoyé" sont appelés
Si il ne peut y avoir que soit un post message soit un post submit, alors le dernier echo ne sera jamais appelé car il est dans le if post['message']
Bonjour,
En fait, le rafraichissement ou redirection c'est fait exprès pour moi, car une fois le message est envoyé, la phrase "Votre message a été envoyé'" reste sur la page, je veux qu'elle disparaisse au bout de 3 secondes à peu près dans le genre, c'est pourquoi j'ai demandé :
header("location:ma_pageContact.php");
Car si après l'envoi du message, la page ne fait rien, il suffit que le visiteur rafraichisse la page en tapant F5, cela renvoie encore une 2ème fois le même message, ainsi je pourrai recevoir plusieurs mêmes messages du même visiteur, c'est agaçant. Je veux éviter cela.
En ce qui concerne le code, oui, au début ce n'était pas comme ça, normalement il n'y a pas deux fois
echo 'Votre message a été envoyé';
mais je teste différents trucs.
En gros, je veux qu'une fois le message est envoyé, la phrase "Votre message a été envoyé" s'affiche pour le visiteur, puis 3 secondes plus tard, la page est redirigée vers elle-même (ou rafraichissement).
Bonsoir,
Dans ce cas tu peux passer par des messages "flash". soit par les sessions ou avec la méthode GET
Et c'est Location et non location. Certe cela fonctionne mais une fois en ligne, c'est beaucoup moins sur
Bonsoir,
Je ne veux rien de Flash, cette technologie est bannie par le web. Je suis novice dans le php, c'est quoi la méthode ? C'est dans php ?
Je n'ai pas parler de téchnologie flash, mais de message "flash" c'est à dire de message qui ne s'affichages qu'une seul fois. Fais de la recherche tu verras
Pour cacher le message sans modifier la page, la seule solution est de passer par du JS pour cacher le message après 3secondes, le plus simple est de passer par une modal Bootstrap
Pour ce qui est de message flash, c'est en gros ce que tu veux faire: un message temporaire
Rien à voir avec AdobeFlash :p
@popotte,
J'ai trouvé la solution, je l'ai mis comme sujet résolu en haut, je reste dans le php tout simple, pas besoin de Js ou Bootstrap.
Ah très bien ^^
Tu peux partager ta solution pour les personnes qui se retrouvent dans la même situation? :p
@popotte, oui, elle est épinglée en haut, je le fais à chaque fois quand la solution est trouvée. Tu la trouves dans le premier message parmi les réponses du post.