====== 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");');
}