Interdire "page précedente " en php

froujaOne Messages postés 12 Statut Membre -  
 hamid 81 -
bonjour,
en fait g 3 pages php la 1ere fait un calcul et envoi des variables a la 2eme page qui a son tour traite ces données récupérées et les envoie par mail. la troisieme affiche que le resultat a bien été envoyé.
le pb c que si je suis sur la 3ieme page et je fait précedent je retourne a la 2ieme page par consequent j'aurais un envoie de mail de plus.
comment je pourrais interdire ce retour arriere (precedent).

merci d'avance
A voir également:

5 réponses

kij_82 Messages postés 4260 Statut Contributeur 857
 
Si tu ne souhaite que pouvoir envoyer un seul mail par adresse mail, dans ce cas tu peux faire un system de vérification d'adressse email lors de l'envoi du formulaire.
S'il s'agit d'une adresse à laquelle rien n'a encore été envoyé, dans ce cas tu enregistre l'adresse dans un fichier ou dans une table de base de donnée
S'il s'agit d'une adresse déjà répertorié dans ton fichier ou ta base, alors tu n'envoi pas le mail.
Et pour tester, à chaque tentative d'envoi tu lis ton fichier ou récupère de ta base de donnée les adresses déjà validée et si l'adresse courante en fait partie...

Voilà, une petite solution pour t'éviter d'envoyer plusieur fois le mail à chaque personne. Le probleme c'est qu'au bout d'un moment des adresse mail t'en a un wagon, donc deuxieme solution à laquelle je viens de penser : Tu créé une variable de session dans laquelle lorsque tu envoi le mail tu passe l'adresse à laquelle ca a été envoyé.

Ainsi, lors de l'envoi du mail, juste avant, tu test si ta variable de session existe ou non, et si elle existe, si l'adresse mail sur laquelle envoyer est la même alors tu n'envoi pas (car déjà envoyé)

Résumé :
$_SESSION["mail"] = "ours@hotmail.com";
$mail = "toto@hotmail.com";
if ( isset($_SESSION["mail"] && $_SESSION["mail"] == $mail ){
  echo "meme adresse mail, pas d'envoi";
}
else {
   // --- Envoi :
   mail(...);
  // --- Update de l'adresse mail dans la session
  $_SESSION["mail"] = $mail;
  // --- Redirection sur la page suivante
  ....
}



Voilà, bien sur faut mettre en place un systeme de session pour tes pages.
En espérant que ca te donne des idées.
1
Profil bloqué
 
Bien vu Kij_82.c'est la bonne méthode...
0
kij_82 Messages postés 4260 Statut Contributeur 857
 
Je ne sais pas si c'est LA bonne méthode, disons que s'en est une ^^
0
Profil bloqué > kij_82 Messages postés 4260 Statut Contributeur
 
Merci au moins d'avoir trouvé une méthode.
0
bibiconseil
 
Il suffit d'ajouter le code javascript suivant sur la deuxième page (en dehors du code php bien sûr) pour interdire qu'une autre page revienne en arrière dessus :
<script language="JavaScript">

window.history.forward();

function page() {
var w=window.document;
w.write("<HTML><HEAD><TITLE>NoBack (episode 2 ET FIN) !</TITLE>");
w.write("<script language=\"JavaScript\">window.history.forward();");
w.write("<\/SCRIPT>");
w.write("</HEAD><body onunload=\"window.history.forward();\">");
w.close;
}

</SCRIPT>

Ensuite vous ajoutez une balise body avec l'appel de la fonction javascript comm ci-dessous :
<body onunload="window.history.forward();">


LE BOUTON ARRIERE DE LA TROISIEME PAGE QUI VEUT REVENIR A LA DEUXIEME SERA BLOQUE !!!
1
eclair
 
ce script marche en merveille et c'est vraiment simple
0
Profil bloqué
 
salut,mais eske tu as vérifié si eske le mail part deux fois ou une seule fois???
0
froujaOne Messages postés 12 Statut Membre 1
 
si g verifié.
0
Profil bloqué > froujaOne Messages postés 12 Statut Membre
 
bon ce que tu peux faire c'est faire une redirection vers une autre page lorsque le message a été bien envoyé.
0
kij_82 Messages postés 4260 Statut Contributeur 857 > Profil bloqué
 
Ca ne change rien au probleme puisque l'utilisateur peut toujours revenir sur la page précédente
0
hk
 
désactive JavaScript, et tu bloque rien du tout...
Il faut géré ça en PHP avec une ligne de code : header('Location:ma_page_interdit_retour_arriere.php');
0

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

Posez votre question
hamid 81
 
moi j trouve qu'il faut poster les valeurs de la première, à la deuxième et puis à la troisième avec $_GET ou $_POST et à la page finale mettre toutes les requêtes nécessaires (insertion, mise à jour, envoi de mail etc), comme ça tu peux revenir autant de fois que tu veux. une fois le formulaire est validé, mettre aller sur une autre page , accueil par exemple.
0