<?php
$uri = explode("/", $_SERVER[REQUEST_URI]);
if ($uri[4]){
    $filename = preg_replace('![^\w\d\s\-]*!',"",$uri[4]);
    $ext=substr($filename,strlen($filename)-3,strlen($filename));
    $filename =substr($filename,0,strlen($filename)-3).".".$ext;
    if ($ext=='mp4' OR $ext=='mp3')
         file_force_download($filename);
    else{
	 header('HTTP/1.1 404 Not Found');
	 header('Location: /404.html');
	 exit();
    }

}else{
 header('HTTP/1.1 404 Not Found');
 header('Location: /404.html');
 exit();
}

function file_force_download($file) {
  if (file_exists($file)) {
    // сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
    // если этого не сделать файл будет читаться в память полностью!
    if (ob_get_level()) {
      ob_end_clean();
    }else echo "w";
    // заставляем браузер показать окно сохранения файла
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    // читаем файл и отправляем его пользователю
    if ($fd = fopen($file, 'rb')) {
      while (!feof($fd)) {
        print fread($fd, 1024);
        $i++;
      }
      fclose($fd);
      doLog(" - ".$file." - ".number_format($i)." КБ");
    }
    exit;
  }
}


function doLog($text)
{
  // open log file
  $filename = "/home/wa3angels/files/download.log";
  $fh = fopen($filename, "a") or die("Could not open log file.");
  fwrite($fh, date("d-m-Y, H:i")." -  ".$_SERVER[REMOTE_ADDR]." $text\n") or die("Could not write file!");
  fclose($fh);
}

?>
