Outils pour utilisateurs

Outils du site


php:snippets

Ceci est une ancienne révision du document !


Bouts de scripts

check & download

Plein de bouts de codes un peu partout pour gérer les download avec check préalable, mais aucun qui gère le cache proprement, donc à partir des commentaires de la fonction header de la doc php, ça donne :

// ici code de vérif des droits, de la validité du fichier, etc...
$extension = substr($fichier, strrpos($fichier, ".")+1);
// puis, le download à proprement parler
if(is_file($fichier)) { // fichier existe
   // on gere le cache coté client
   $headers = apache_request_headers();
   if (isset($headers['If-Modified-Since']) && (strtotime($headers['If-Modified-Since']) == filemtime($fichier))) {
      // le fichier est en cache chez le client, avec la bonne date
      header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($fichier)).' GMT', true, 304);
   } else {
      // pas en cache ou trop vieux
      header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($fichier)).' GMT', true, 200);
      header('Content-Length: '.filesize($fichier));
      $mime = 'application/'.$extension;
      if ($extension == 'html' || $extension == 'htm') {
         $mime = 'text/html';
      }
      header("Content-type: $mime");
      readfile($fichier);
   }
} else {
   // fichier KO
   header('header("HTTP/1.x 404 Not Found");');
}
php/snippets.1202145052.txt.gz · Dernière modification : 04/02/2008 18:10 de daniel