Interdire "page précedente " en php

Fermé
froujaOne Messages postés 12 Date d'inscription jeudi 23 novembre 2006 Statut Membre Dernière intervention 15 décembre 2006 - 15 déc. 2006 à 08:43
 hamid 81 - 19 mai 2015 à 20:41
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 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
15 déc. 2006 à 09:39
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é
15 déc. 2006 à 10:33
Bien vu Kij_82.c'est la bonne méthode...
0
kij_82 Messages postés 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857
15 déc. 2006 à 10:35
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 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013
15 déc. 2006 à 10:46
Merci au moins d'avoir trouvé une méthode.
0
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
ce script marche en merveille et c'est vraiment simple
0
Profil bloqué
15 déc. 2006 à 08:54
salut,mais eske tu as vérifié si eske le mail part deux fois ou une seule fois???
0
froujaOne Messages postés 12 Date d'inscription jeudi 23 novembre 2006 Statut Membre Dernière intervention 15 décembre 2006 1
15 déc. 2006 à 08:58
si g verifié.
0
Profil bloqué > froujaOne Messages postés 12 Date d'inscription jeudi 23 novembre 2006 Statut Membre Dernière intervention 15 décembre 2006
15 déc. 2006 à 09:47
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 4088 Date d'inscription jeudi 7 avril 2005 Statut Contributeur Dernière intervention 30 septembre 2013 857 > Profil bloqué
15 déc. 2006 à 10:01
Ca ne change rien au probleme puisque l'utilisateur peut toujours revenir sur la page précédente
0
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
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