Показать сообщение отдельно

  #7  
Старый 27.04.2010, 14:02
Doom123
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
Провел на форуме:
3941248

Репутация: 668


Отправить сообщение для Doom123 с помощью ICQ
По умолчанию

код выложил 440hz на форуме php.ru поддерживает докачку ...

PHP код:
<?php

/**
 * @author 440hz
 * @copyright 2007
 */
 
 
session_start();

require_once (
'includes/config.php');

if (isset(
$_GET['id'])) 
{
//ID файла в базе
    
if (isset($_SESSION['level']) && $_SESSION['level'] === '2'
    { 
// Проверка уровня пользователя

//Просим БД дать нам имя файла по его ID
        
$res $db->mysql_qw('SELECT `name`,`cat` FROM `video` WHERE `id`=?'$_GET['id']) or
            die();
        
$fetch $db->mysql_fetch($res);

        
// отдаваемое файло
        
$filename 'movie/' $fetch['cat'] . '/' $fetch['name'];

        
// есл файла нет
        
if (!file_exists($filename)) {
            
header("HTTP/1.0 404 Not Found");
            exit;
        }

        
// получим размер файла
        
$fsize filesize($filename);
        
// дата модификации файла для кеширования
        
$ftime date("D, d M Y H:i:s T"filemtime($filename));
        
// смещение от начала файла
        
$range 0;

        
// пробуем открыть
        
$handle = @fopen($filename"rb");

        
// если не удалось
        
if (!$handle) {
            
header("HTTP/1.0 403 Forbidden");
            exit;
        }

        
// Если запрашивающий агент поддерживает докачку
        
if ($_SERVER["HTTP_RANGE"]) {
            
$range $_SERVER["HTTP_RANGE"];
            
$range str_replace("bytes="""$range);
            
$range str_replace("-"""$range);
            
// смещаемся по файлу на нужное смещение
            
if ($range) {
                
fseek($handle$range);
            }
        }

        
// если есть смещение
        
if ($range) {
            
header("HTTP/1.1 206 Partial Content");
        } else {
            
header("HTTP/1.1 200 OK");
        }

        
header("Content-Disposition: attachment; filename=\"{$filename}\"");
        
header("Last-Modified: {$ftime}");
        
header("Content-Length: " . ($fsize $range));
        
header("Accept-Ranges: bytes");
        
header("Content-Range: bytes {$range}-" . ($fsize 1) . "/" $fsize);

        
// подправляем под IE что б не умничал
        
if (isset($_SERVER['HTTP_USER_AGENT']) and strpos($_SERVER['HTTP_USER_AGENT'],
            
'MSIE'))
            
Header('Content-Type: application/force-download');
        else
            
Header('Content-Type: application/octet-stream');

        while (!
feof($handle)) {
            
$buf fread($handle512);
            print (
$buf);
        }

        
fclose($handle);

    } else {
        
header("HTTP/1.0 403 Forbidden");
        exit;
    }
} else {
    
header("HTTP/1.0 403 Forbidden");
    exit;
}

?>
 
Ответить с цитированием