Téléchargement de fichier depuis UUID avec fichier log

Ce script permet de télécharger un fichier spécifique depuis une URL de type http://www.example.com/download?7ebbf342-209d-4f28-b4b6-6df953d8a86a. Le résultat des requêtes s'ajoute dans un fichier de log.

Structure de fichiers

  download/
  download/files/
  download/logs/
  download/.htaccess
  download/index.php
  download/files.ini
  download/files/test.txt (optionnel)

download/.htaccess - Fichier de protection d'accès direct

FIXME

download/index.php - Script de téléchargement

index.php
<?php
$files = parse_ini_file('files.ini');
$realfile = './files/'.$files[$_SERVER['QUERY_STRING']];
if ((!file_exists($realfile)) || (!array_key_exists($_SERVER['QUERY_STRING'],$files)))
{
    $status = 'NOT-FOUND';
    $log = date('Y-m-d H:i:s').' '.$_SERVER['REMOTE_ADDR'].' '.$_SERVER['HTTP_X_FORWARDED_FOR']." $status ".$_SERVER['QUERY_STRING']." $realfile\n";
    file_put_contents('./logs/download_'.date("Y-m-d").'.log', $log, FILE_APPEND);
    die(header('Location: /error/404?uri='.$_SERVER['REQUEST_URI']));
}
else
{
    $status = 'OK';
    $log = date('Y-m-d H:i:s').' '.$_SERVER['REMOTE_ADDR'].' '.$_SERVER['HTTP_X_FORWARDED_FOR']." $status ".$_SERVER['QUERY_STRING']." $realfile\n";
    file_put_contents('./logs/download_'.date("Y-m-d").'.log', $log, FILE_APPEND);
    die(header('Location: '.$realfile));
}
die();

download/files.ini - Fichier de correspondance UUID ⇒ Fichier

files.ini
7ebbf342-209d-4f28-b4b6-6df953d8a86a="test.txt" ; Test, à supprimer (incluant le fichier)
961abd8c-50b0-468a-938c-6d695c28438d=""
(...)

Pour générer des UUID : uuidgenerator.net