<?
define( 'ROOT_DIR', $_SERVER['DOCUMENT_ROOT'] );

include_once ROOT_DIR . '/engine/config.php'; // подключение к бд
include_once ROOT_DIR . '/engine/func.php'; // подключение к функциям
$fname=$_GET['fname'];
$config_upl = $pdo->Query("SELECT * from php_upload WHERE hash = '" . $fname. "' LIMIT 1")->fetch(PDO::FETCH_BOTH);
$nazvan = $config_upl['title'];
$catalog = $config_upl['catalog'];
$tovar = $config_upl['tovar'];
$fsize=filesize('kukus/'.$catalog);
$fdown='kukus/'.$catalog;

$config_off = $pdo->Query("SELECT * from php_offline WHERE tovar = '" . $tovar. "' LIMIT 1")->fetch(PDO::FETCH_BOTH);
$end = $config_off['end'];
$ip = $config_off['ip'];
$konec = date('d.m.Y г. в. H час. i мин. s сек.', $config_off['date_end']);

 if($end == '1' and $ip == real_IP()){
 echo 'Срок действия ссылки истёк!<br />'.$konec.'';
 }else{

            // Установлена или нет переменная HTTP_RANGE
      if (getenv('HTTP_RANGE')=="") {
            // Читать и отдавать файл от самого начала
            $f=fopen($fdown, 'r');

            header("HTTP/1.1 200 OK");
            header("Connection: close");
            header("Content-Type: application/octet-stream");
            header("Accept-Ranges: bytes");
            header("Content-Disposition: Attachment; filename=".$nazvan);
            header("Content-Length: ".$fsize);

            while (!feof($f)) {
              if (connection_aborted()) {
                fclose($f);
                break;
              }
                echo fread($f, 990000);
                sleep(1);
            }
            fclose($f);
      }else {
            // Получить значение переменной HTTP_RANGE
            preg_match ("/bytes=(\d+)-/", getenv('HTTP_RANGE'), $m);
            $csize=$fsize-$m[1];  // Размер фрагмента
            $p1=$fsize-$csize;    // Позиция, с которой начинать чтение файла
            $p2=$fsize-1;         // Конец фрагмента

            $f=fopen($fdown, 'r');

            header("HTTP/1.1 206 Partial Content");
            header("Connection: close");
            header("Content-Type: application/octet-stream");
            header("Accept-Ranges: bytes");
            header("Content-Disposition: Attachment; filename=".$nazvan);
            header("Content-Range: bytes ".$p1."-".$p2."/".$fsize);
            header("Content-Length: ".$csize);

            fseek ($f, $p1);
            while (!feof($f)) {
               if (connection_aborted()) {
               fclose($f);
               break;
               }
               echo fread($f, 990000);
               sleep(1);
            }
            fclose($f);
      }

 }
?>