Даже так: Вряд ли вам понадобится массив, как у меня:
Дефайните директорию с файлами.
Из запроса по реврайту получаете запрашиваемое имя файла.
Получаете его размер. Если файла не оказывается - редирект в корень и забыли.
В остальных случаях - выдаём файл сначала или с запрошенной части.
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
А если так?
... а так же тройник и удлиннитель :)
Помоему это и так ясно. Не на пустом же месте человек проблему начал раздувать ;)
Тем более получатель денег подтвердил получение.
Да. Через модреврайт.
При запросе, к примеру:
http://site.com/downloads/file.zip
$_SERVER["REQUEST_URI"] будет содержать /downloads/file.zip
По имени файла вытаскиваем из базы запись, соответствующую этому файлу, если такая есть.
Проверяет успешность извлечения данных из базы :)
Первую запись, соответствующую запрошенному имени, если такая в базе имеется.
Контроль версий. Если пользователь пытается запросить что-то левое, то ему возвращается самый последний файл. У вас все строки касательно БД можно скорей всего просто выкинуть.
лучше так:
<input type="text" name="xxx" value="<?echo htmlspecialchars($_POST['xxx'], ENT_QUOTES);?>">
Firefox :)
Как избавиться - антивирем сканить.
Как не подцепить - включить фаервол.