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

Langage PHP Discussion :

[Sécurité] Gestion du cache / cookies


Sujet :

Langage PHP

  1. #1
    dug
    dug est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 151
    Points : 84
    Points
    84
    Par défaut [Sécurité] Gestion du cache / cookies
    Bonjour,

    j'ai un petit soucis, voilà ce que j'ai fais (pour un site de photo):

    un tag image, dont la source est un script php, qui va chercher la bonne photo suivant les droits d'accès. Donc, les photos ne sont pas accessible directement du site web par sécurité.

    J'aimerai utilisé le cache du navigateur pour qu'il ne télécharge pas à chaque fois l'image. Mais j'aimerai pouvoir l'effacer si il y a une demande de déconnexion.

    Y a-t-il moyen de faire cela ?
    Merci d'avance.

  2. #2
    dug
    dug est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 151
    Points : 84
    Points
    84
    Par défaut
    ma question n'est pas claire ?
    c'est impossible ??

  3. #3
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Ce que tu peux faire c'est mettre un header pour forcer la mis à jour du cache
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date du passé

  4. #4
    dug
    dug est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    151
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 151
    Points : 84
    Points
    84
    Par défaut
    Merci beaucoup de ta réponse ePoX.

    donc si je mets ces lignes header, je peux marquer la date actuel +1 jour par exemple.
    Cela veut dire que le cache sera effacé (plus utilisable par des indiscret) à la prochaine connexion sur le site, c'est bien cela ?

    le cache est spécifique par page non ? donc si j'appelle toujours la même page avec des paramètres POST pour créer ma page dynamique, cela fonctionnera ?

    je vais faire des testes de tout façon.

  5. #5
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    Voici un bout de code que j'avais fait pour gérer le cache, ça m'intéresse
    si y a des gens qui peuvent le tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    function proxy_getallheaders() {
    	   foreach($_SERVER as $h=>$v)
    	       if(ereg('HTTP_(.+)',$h,$hp))
    	           $headers[$hp[1]]=$v;
    	   return $headers;
    	}
     
    	function proxy_sendCacheHeaders($lm) {
    		$flm = date('D, d M Y H:i:s', $lm  - date("Z")) . ' GMT';
    		header("Last-Modified: $flm");
    		$exp = date('D, d M Y H:i:s', time() + 86400) . ' GMT';
    		header("Expires: $exp");
    		header("Cache-Control: cache");
    		header("Cache-Control: post-check=1, pre-check=1");
    		header("Pragma: cache");
    	}
     
    	function proxy_serveFile($filename) {		
    		$mimetypes['gif'] = "image/gif";
    		$mimetypes['jpg'] = "image/jpeg";
    		$mimetypes['png'] = "image/png";
    		$mimetypes['pdf'] = "application/pdf";
     
    		$lm = filemtime($filename);
     
    		//$headers = getallheaders();
    		$headers = proxy_getallheaders();
     
    		if(isset($headers["If-Modified-Since"])) {
    		   $gmt_mtime = date('D, d M Y H:i:s', $lm  - date("Z")) . ' GMT';
    		   if ($headers["If-Modified-Since"] == $gmt_mtime) {
    			   header("HTTP/1.1 304 Not Modified");
    			   proxy_sendCacheHeaders($lm);
    			   exit;
    		   }
    		}
     
    		$pi = pathinfo($filename);
    		$ext = strtolower($pi['extension']);
    		$mime = $mimetypes[$ext];	
     
    		$size= filesize($filename); 
    		header("Content-Length: $size");
    	    proxy_sendCacheHeaders($lm);
     
    		if($mime) header("Content-Type: $mime");
    		readfile($filename);
    		exit;
    	}
    Mais j'aimerai pouvoir l'effacer si il y a une demande de déconnexion
    Là j'ai pas capté ce que tu veux faire ?

Discussions similaires

  1. [cache] Gestion du cache en général
    Par Maxoo dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 15/12/2006, 10h21
  2. Gestion du cache d'un ResulSet
    Par skunkies dans le forum JDBC
    Réponses: 1
    Dernier message: 30/10/2006, 18h12
  3. [Xml][Memoire] gestion du cache
    Par tatou42 dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 21/09/2005, 17h48
  4. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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