IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Conception Web Discussion :

Forcer une page de l'historique de navigation a se recharger


Sujet :

Conception Web

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Par défaut Forcer une page de l'historique de navigation a se recharger
    Bonjour,

    Je réalise un site en PHP/Html dont certaines pages sont en accès restreint. Chaque page intègre le même formulaire de connexion (login et password). Quand l'utilisateur est authentifié, ce formulaire est remplacé par un lien de déconnexion qui clôt la session.

    Les pages "protégées" ne sont accessibles qu'après authentification.

    Le problème est le suivant :
    On se connecte et se rend sur une page protégée. Puis depuis cette page (ou une autre) on se déconnecte et on retourne dans l'historique du navigateur.
    Avec IE, FF et Chrome .... on ne retombe jamais sur la page protégée (normal)
    Avec Safari (pc ou mac) si ! En fait il affiche la page telle qu'elle était dans le cache.

    Un "reload" manuel suffit à afficher la page correctement .... mais ce n'est bien sur pas une solution acceptable. Or le code pour faire la redirection est bien prévu dans la page concernée mais ne s'exécute pas puisque la page (avec Safari) n'est pas rechargée.

    Bref comment forcer le "reload" de la page

    Je précise que la vérification de la connexion se fait par sessions, que j'ai essayé les URL avec parametres en GET aléatoires, les cookies coinjointement aux sessions ... rien n'y fait ce .... euh .... cher Safari charge la page qui est dans le cache.

    Ah oui oubliez aussi les directives "http-equiv" qui ne résolvent rien non plus

    Help ...

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Et un pragma no-cache ?
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Par défaut
    En fait j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    header('Cache-Control: no-cache');
    header('Pragma: nocache');
    Ça marche pas ... en fait le problème demeure

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?
    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date dans le passé
    Pas mieux

    Alors J'ai pensé au javascript pour forcer le "reload" et j'ai tenté ça (sur un onload de la page) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function refreshHist() {
      var detect = navigator.userAgent.toLowerCase();
      if (detect.indexOf("safari") + 1) {
        if (document.referrer != '' && document.referrer != document.location) {
          document.location.replace(document.location);
        }
      }
    }
    Ça le fait très bien pour Chrome (qui utilise le moteur de Safari) mais pour Safari ça ne change rien du tout

    J'ai même essayé le .htaccess :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # Activer mod_expires
    ExpiresActive On
    # Placer un Cache-Control header sur la page : pagesecurise.php
    <Files pagesecurise.php>
    Header append Cache-Control "public, must-revalidate"
    </Files>
    Rien non plus

    Je suis un peu a court d'inspiration .... si tu veux je peux te mettre en ligne les quelques pages (minimalistes) ou j'ai expurgé le problème mais si tu n'as pas Safari ça ne donnera rien

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 9
    Par défaut
    Bon puisqu'on est dans la quatrième dimension j'en ai profité pour faire la totale dans le header :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    header("Expires: Mon, 3 Jan 2000 01:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
    Ce qui ... euh ....ne suffit pas
    Et dans mes nombreuses recherches de fourmi sur le net et sur les forums de developpez.net j'ai trouvé un "tip & trick" .... (mais ne me demandez pas pourquoi il le faut je n'en ai pas la moindre idée) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <iframe style="height:0px;width:0px;visibility:hidden" src="about:blank">
      Interdire la mise en cache
    </iframe>
    Et la avec le tout .... grand bonheur ca fonctionne avec "Safari"


  5. #5
    Membre éclairé Avatar de vanitom
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    327
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 327
    Par défaut
    Salut Okidor,

    Je reviens vers ce sujet car j'ai exactement le même problème mais malheureusement ton dernier post ne résout pas mon problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<meta http-equiv="CACHE-CONTROL" content="max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0" />
    	<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
    	<META HTTP-EQUIV="Expires" CONTENT="Mon, 3 Jan 2000 01:00:00 GMT">
    	<META HTTP-EQUIV="Last-Modified" CONTENT="<?php echo gmdate("D, d M Y H:i:s"); ?> GMT">
    Je ne comprends pas. Aurais tu d'autres explications ?
    As tu mis en plus les autres solutions avec le script, le htaccess, ... ?

    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Forcer une page ou un dossier en HTTPS
    Par redah75 dans le forum Apache
    Réponses: 45
    Dernier message: 31/01/2012, 15h41
  2. Comment forcer une page web à s'afficher dans un cadre?
    Par lazario dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 25/10/2007, 13h39
  3. Probleme ascensseur / barre de navigation dans une page
    Par bixi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 12/12/2005, 14h56
  4. Forcer l'affichage d'une page dans un cadre
    Par Thcan dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/11/2005, 10h58
  5. Forcer une page à s'ouvrir avec Internet Explorer
    Par alexbubs dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 31/10/2005, 10h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo