Table des matières

Bouts de scripts

dump de var dans une chaine

/**
 * Returns a string with the output of var_dump
 * pique dans nusoap_base
 *
 * @param mixed $data The variable to var_dump
 * @return string The output of var_dump
 * @access public
 */
function varDump($data) {
	ob_start();
	var_dump($data);
	$ret_val = ob_get_contents();
	ob_end_clean();
	return $ret_val;
}

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 :

session_cache_limiter('private_no_expire'); // IMPORTANT car par défaut php envoie du no-cache
@session_start();
// 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");');
}