Répondre à un header If-Modified-Since

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par Pasco, 9 Avril 2006.

  1. Pasco

    Pasco Nouveau WRInaute

    Inscrit:
    13 Mai 2005
    Messages:
    10
    J'aime reçus:
    0
    Salut,

    J'ai un site tout en php, que des pages dynamiques.
    A la différence d'un site statique, il n'envoie pas automatiquement d'info sur la date des dernières modifications. J'ai donc pris la précaution de rajouter
    Code:
    header("Last-Modified: " . gmdate("D, d M Y H:i:s",$last_modif) . " GMT");
    en calculant $last_modif par ailleurs.

    Seulement, si je comprends bien, cela ne répond pas à une requête client qui contient le header If-Modified-Since.
    Il faudrait :
    - détecter le header client If-Modified-Since ;
    - comparer la date de ce header à celle du document ;
    - renvoyer le document si la date du document est plus récente que la date du header client ;
    - sinon renvoyer seulement le header 304 not-modified ;

    1°) Est-ce que cette analyse est correcte ?
    2°) Est-ce que quelqu'un a un tel script déjà prêt ?

    Pasco
     
  2. Pasco

    Pasco Nouveau WRInaute

    Inscrit:
    13 Mai 2005
    Messages:
    10
    J'aime reçus:
    0
    Bon vous fatiguez pas, j'ai trouvé :

    1°) c'est effectivement ce qu'il faut faire ;
    2°) il suffit de faire ça

    Code:
    	
    $if_modified_since = preg_replace('/;.*$/', '',$HTTP_IF_MODIFIED_SINCE);
    $gmdate_mod = gmdate('D, d M Y H:i:s', $mtime) . ' GMT';
    if ($if_modified_since == $gmdate_mod)
    			{
    			header("HTTP/1.0 304 Not Modified");
    			exit;
    			}
    header("Last-Modified: " . $gmdate_mod);
    
    avec $mtime la date de la dernière modif de la page consultée.