dkameleon

dkameleon
Рейтинг
386
Регистрация
09.12.2005
Интересы
деньги, секс и рок-н-рол

Даже так: Вряд ли вам понадобится массив, как у меня:

Дефайните директорию с файлами.

Из запроса по реврайту получаете запрашиваемое имя файла.

Получаете его размер. Если файла не оказывается - редирект в корень и забыли.

В остальных случаях - выдаём файл сначала или с запрошенной части.

        
define("DIR_DOWNLOADS", "files");
$fn = @basename($_SERVER["REQUEST_URI"]);

$fs = @filesize(DIR_DOWNLOADS."/".$fn );
if (!$fs) {
header("Location: /");
exit();
}

if (!isset($_SERVER["HTTP_RANGE"])) {
header ("HTTP/1.1 200 OK");
header ("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
header ("Cache-Control: None");
header ("Pragma: no-cache");
header ("Accept-Ranges: bytes");
header ("Content-Disposition: inline; filename=\"$fn\"");
if (preg_match("#Opera(/| )([0-9].[0-9]{1,2})#", $_SERVER["HTTP_USER_AGENT"]) or preg_match("#MSIE ([0-9].[0-9]{1,2})#", $_SERVER["HTTP_USER_AGENT"])) {
header("Content-Type: application/octetstream");
} else {
header("Content-Type: application/octet-stream");
}
header ("Content-Length: $fs");
header ("Age: 0");
header ("Proxy-Connection: close");

@readfile(DIR_DOWNLOADS."/".$fn);
}else{
ereg("bytes=([0-9]+)", $_SERVER["HTTP_RANGE"], $m);
$contentSize = $fs - intval($m[1]);
$p1 = $fs - $contentSize;
$p2 = $fs - 1;
$p3 = $fs;
$p4= $p3 - $p1;
header ("HTTP/1.1 206 Partial Content");
header ("Expires: Thu, 19 Nov 1981 08:52:00 GMT");
header ("Cache-Control: None");
header ("Pragma: no-cache");
header ("Accept-Ranges: bytes");
header ("Content-Disposition: inline; filename=\"$fn\"");
if (preg_match("#Opera(/| )([0-9].[0-9]{1,2})#", $_SERVER["HTTP_USER_AGENT"]) or preg_match("#MSIE ([0-9].[0-9]{1,2})#", $_SERVER["HTTP_USER_AGENT"])) {
header("Content-Type: application/octetstream");
} else {
header("Content-Type: application/octet-stream");
}
header ("Content-Range: bytes $p1-$p2/$p3");
header ("Content-Length: $p4");
header ("Proxy-Connection: close");
$fd = @fopen(DIR_DOWNLOADS."/".$fn, "rb");
@fseek($fd, $p1, SEEK_SET);
while(!@feof($fd)) {
echo(@fread($fd, $p3));
}
@fclose($fd);
}

a1333, Gezer,

Попробуйте с этй библиотекой:

http://www.iol.ie/~locka/mozilla/mozilla.htm

Там есть полно ньюансов, но как знать, возможно в вашем случае обойдётся без них :)

Сколько нужно участников интернет-форума, чтобы ввернуть лампочку?

Ответ: 1193...

1 меняет лампочку и пишет в форум, что лампока была заменена

12 делятся сходным жизненным опытом и историями о замене лампочек разными способами

7 предупреждают, что замена лампочки - опасное занятие

27 указывают на грамматические и орфографические ошибки в предыдущих сообщениях

53 устраивают перебранку с грамотеями

156 пишут администратору форума жалобы о недопустимости обсуждения замены лампочек в данном форуме

41 человек исправляет грамматические ошибки в постах тех, кто ругался с теми, кто первым указал на орфографические ошибки

109 требуют перенести обсуждение замены лампочек в forums.litebulb

203 требуют перенести обсуждение ошибок в forums.grammar, forums.spelling и forums.punctuation

111 пишут, что все мы пользуемся лампочками, поэтому обсуждение их замены вполне допустимо в форуме

306 спорят, где лучше покупать лампочки, какой из методов замены эффективнее, и какие марки лампочек годятся для этого, а какие нет

27 присылают ссылки на сайты, где можно видеть образцы различных лампочек

14 сообщают, что ссылки не работают и присылают правильные ссылки

3 пишут, что нашли на этих сайтах материалы, касающиеся форума, что делает обсуждение замены лампочек в форуме допустимым

33 сортируют все предыдущие сообщения, собирают их в один длинный текст, и в конце добавляют свое мнение

12 заявляют, что уходят из форума навсегда, так как не могут больше выносить разгоревшуюся дискуссию

4 предлагают завести FAQ по лампочкам и их замене

25 предлагают открыть новый форум forums.change.litebulb

47 заявляют, что форум forums.physic.cold.fusion был предназначен именно для этого

Дробышев:
Сообщений, относящихся к "вирусному" маркетингу, еще не видел, значит распространение никакое.

http://sandric.livejournal.com/46247.html

А если так?

fine:
Может, это не она, а двойник?

... а так же тройник и удлиннитель :)

totat:

Все вопросы сразу я думаю у всех отпадут.

Помоему это и так ясно. Не на пустом же месте человек проблему начал раздувать ;)

Тем более получатель денег подтвердил получение.

feline:

Это мы берем какой-то идентификатор, взяв за основу ... имя файла?

Да. Через модреврайт.

При запросе, к примеру:

http://site.com/downloads/file.zip

$_SERVER["REQUEST_URI"] будет содержать /downloads/file.zip

feline:
Эта функция, скорее всего, извлекает из базы ЧТО-ТО, используя идентификатор полученный на шаге 1 в качестве опознавательного знака... ЧТО она оттуда извлекает, чтобы записать в переменную download?

По имени файла вытаскиваем из базы запись, соответствующую этому файлу, если такая есть.

feline:
Что делает функция count?

Проверяет успешность извлечения данных из базы :)

Первую запись, соответствующую запрошенному имени, если такая в базе имеется.

feline:
А db_get_latest_download???

Контроль версий. Если пользователь пытается запросить что-то левое, то ему возвращается самый последний файл. У вас все строки касательно БД можно скорей всего просто выкинуть.

AntonSmile:
<input type="text" name="xxx" value="<?echo $_POST['xxx'];?>">

лучше так:

<input type="text" name="xxx" value="<?echo htmlspecialchars($_POST['xxx'], ENT_QUOTES);?>">
timokha:
а FF что за абревиатура?

Firefox :)

Как избавиться - антивирем сканить.

Как не подцепить - включить фаервол.

Всего: 8009