History.back() et HTTP_REFERER [Résolu]

cs_djagger 536 Messages postés lundi 5 mai 2003Date d'inscription 29 janvier 2009 Dernière intervention - 18 sept. 2007 à 16:41 - Dernière réponse : cs_djagger 536 Messages postés lundi 5 mai 2003Date d'inscription 29 janvier 2009 Dernière intervention
- 20 sept. 2007 à 09:37
Salut !
Voici mon problème, je capte vraiment pas d'où ca peut venir !!

index.php: juste un lien vers page2.php
<html>
[page2.php PAGE 2]
</html>

page2.php: un formulaire POST vers page3.php + un echo $_SERVER["HTTP_REFERER"];
<html>
<form action="page3.php" method="post"></form>
<?php echo $_server["http_referer"];?>
</html>

page3.php: history.back()
<html><script>alert("retour"); window.history.back();</script></html>

Le problème est que mon echo $_SERVER["HTTP_REFERER"]; affiche toujours index.php, même quand je valide mon formulaire !!!
Si qqun a une idée, parceque là je vois pas !
merci d'avance

_____________________
 http://www.bzh-metal.com
Communauté Métal Bretonne
Afficher la suite 

11 réponses

Répondre au sujet
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 19 sept. 2007 à 19:48
+3
Utile
essaie un:
session_cache_limiter('private_no_expire');
avant le session.start() normalement cela évite l'envoi du header qui empèche la mise en cache (responsable du problème).
http://kysicurl.free.fr/
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Kysic
vilhjalms 591 Messages postés mercredi 20 juillet 2005Date d'inscription 16 juillet 2009 Dernière intervention - 18 sept. 2007 à 20:43
0
Utile
Saell og blesuð


Quand vous faites un window.history.back(); vous demandez au navigateur client de faire un precedent donc il va chercher dans son cache et reaffiche la page2 mais le server lui n est pas solicite




Vilhjálms
Sigurðsdóttir aka Frëyjá
Commenter la réponse de vilhjalms
cs_djagger 536 Messages postés lundi 5 mai 2003Date d'inscription 29 janvier 2009 Dernière intervention - 19 sept. 2007 à 09:38
0
Utile
ok c'est logique merci !
Et y'a-t-il un moyen de faire ca !?
Parceque ma page2.php est un gros formulaire, ca éviterait de le re-remplir !

_____________________
 http://www.bzh-metal.com
Communauté Métal Bretonne
Commenter la réponse de cs_djagger
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 19 sept. 2007 à 10:16
0
Utile
Salut,
Une première solution est de sauvegarder la dernière page visitée par le client sur le serveur en utilisant par exemple les sessions.
Une autre est de remplacer le history.back() par un lien vers la page du formulaire et de prépremplir le formulaire avec ce qu'il avait posté la première fois (ce qui implique donc de sauvegardé ce qu'il a posté (session encore...)).
Une autre est sans doute de ce passer d'HTTP_REFERER, mais il faudrais savoir a quoi il vous sert.
(L'header ou la balise méta nocache sont peut être une solution, mais j'ai peur que de toute façon même si le navigateur recharge la page il envoit comme referer celle qui précède dans l'historique, c'est à dire la page index, et de toute manière cela supprimera surement le contenu du formulaire également).
Sinon je suppose que la page3 sert à traiter le formulaire, il est aussi possible de traiter le formulaire sur la même page que celle qui l'affiche, avec affichage éventuel de l'erreur avant le formulaire si il a été mal rempli (ça évite d'avoir à sauvegarder le contenu du formulaire pour le réafficher puisque qu'à ce moment là il est disponible dans les variables POST).
Enfin voilà, il y a plein de solutions en fait, tout dépend de ce que vous voulez faire...
http://kysicurl.free.fr/
Commenter la réponse de cs_Kysic
cs_djagger 536 Messages postés lundi 5 mai 2003Date d'inscription 29 janvier 2009 Dernière intervention - 19 sept. 2007 à 10:39
0
Utile
Salut !
merci de ta réponse !

En fait mon formulaire de page2 est pré-rempli quand on passe par index.
Dans page3, si certaines infos sont incorrectes, je retourne sur page2. Mais du coup il ne faudrait pas que le formulaire se préremplisse ....
en gros dans page2 :

si provenance=index -> pré-remplir le formulaire (en js)
sinon garder les infos entrées par l'utilisateur

traiter le formulaire sur page2 me ferait faire bcp trop de modifs ! (page3 sert a traiter plusieurs form)

je pense que je vais être obligé de stocker le contenu et dans page3, au lieu de window.history.back() :
window.location.href='page2.php?info1=xxx&info2=xxx&etc....';

Si vous avez une autre idée hésitez pas !
encore merci

_____________________
 http://www.bzh-metal.com
Communauté Métal Bretonne
Commenter la réponse de cs_djagger
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 19 sept. 2007 à 10:56
0
Utile
Salut,
ba ça devrait marcher tout seul alors (je dois pas comprendre).
Exemple:
1.html:
   <form method="pos" action="2.html">
   
   
    </form>
2.html:
    [javascript: history.go(-1); retour]
Quand on arrive la première fois sur la première page, le champ est prérempli avec "essai", mais si l'on change le champ, puis qu'on valide, puis qu'on fait retour, on retrouve bien ce que l'on a saisie (le navigateur laisse ce qu'on a rentré).
(et  on peut bien sur changer le contenu de value en php suivant la provenance).
http://kysicurl.free.fr/
Commenter la réponse de cs_Kysic
cs_djagger 536 Messages postés lundi 5 mai 2003Date d'inscription 29 janvier 2009 Dernière intervention - 19 sept. 2007 à 12:29
0
Utile
Alors là je pige plus rien !!
Avec l'exemple ca marche nickel, et avec mon appli ca marche pas ....
pourtant y'a rien de spécial dans mes pages !

J'ai tout simplifié jusqu'à avoir un truc aussi simple que l'exemple .... ca a marché, mais pas du premier coup
du coup j'ai remis les pages telles qu'elles étaient au début .... ca a marché 3-4 fois et maintenant ce remarche plus !

je capte plus rien là
_____________________
 http://www.bzh-metal.com
Communauté Métal Bretonne
Commenter la réponse de cs_djagger
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 19 sept. 2007 à 12:47
0
Utile
Ce qu'il serait intéressant de savoir c'est si la page est rechargée ou si le navigateur se sert du cache (en affichant l'heure du serveur sur la page par exemple).
Sinon est-ce que cela à avoir avec le temps entre le premier chargement de la page 2 et le moment ou l'on y retourne ?
(voir avec une balise meta : <meta http-equiv="Expires" content="3600"/> )
Commenter la réponse de cs_Kysic
cs_djagger 536 Messages postés lundi 5 mai 2003Date d'inscription 29 janvier 2009 Dernière intervention - 19 sept. 2007 à 13:06
0
Utile
je ne crois pas que ca vienne du cache sinon ca ne marcherait pas pour l'exemple !

apparement ca vient de ma session php !????

avec session_start(); au début de ma page2 ca ne marche pas !
j'enleve le session_start, je relance mon navigateur ca marche !

moi pas comprendre

_____________________
 http://www.bzh-metal.com
Communauté Métal Bretonne
Commenter la réponse de cs_djagger
cs_Kysic 332 Messages postés mardi 12 juillet 2005Date d'inscription 17 juillet 2010 Dernière intervention - 19 sept. 2007 à 19:50
0
Utile
et sinon (en php avant d'ouvrir la session):
header("Cache-Control: private_no_expire");
header("Pragma: private_no_expire");
header("Expires: 1");

http://kysicurl.free.fr/
Commenter la réponse de cs_Kysic
cs_djagger 536 Messages postés lundi 5 mai 2003Date d'inscription 29 janvier 2009 Dernière intervention - 20 sept. 2007 à 09:37
0
Utile
Yessss ca marche !!!
Merci beaucoup, je n'aurais pas trouvé tout seul !!
Une journée qui commence bien !
Encore merci ;) a+++
_____________________
 http://www.bzh-metal.com
Communauté Métal Bretonne
Commenter la réponse de cs_djagger

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.