|
Временная ссылка на файл. как это работает?
|
| Автор |
Сообщение |
noLove Два пингвина


Зарегистрирован: 25.04.2007 Сообщения: 352
18114 
|
Добавлено: Пн, 15 Сен, 2008 15:09 Заголовок сообщения: Временная ссылка на файл. как это работает? |
|
|
собственно, субж. Все файлообменники типа рапиды на 1 и тот же файл генерируют милионы различных ссылок. Неужели на миллион ссылок делается миллион копий файлов, или есть более красивый способ?
если знает кто нибудь - поделитесь плиз принципом работы таких скриптов?
Спасибо заранее  _________________ Друзья, уважайте труд других
http://xternalx.com - моя хомпага
 |
|
| Вернуться к началу |
|
 |
lazutov while (1==1);


Зарегистрирован: 30.04.2007 Сообщения: 3840
111220 
|
|
| Вернуться к началу |
|
 |
[LP]LordPro.teus Призрак Лорда


Зарегистрирован: 26.07.2007 Сообщения: 5092
42282 
|
Добавлено: Пн, 15 Сен, 2008 15:51 Заголовок сообщения: |
|
|
lazutov
но ведь у человека тогда как адрес самого файла браузер уже запишет реальную ссылку, а значит, он сможет ее распространять?.. _________________

До выхода LiteDiary 0.3.0: парам-пам-пам-пам! Она уже здесь! |
|
| Вернуться к началу |
|
 |
lazutov while (1==1);


Зарегистрирован: 30.04.2007 Сообщения: 3840
111220 
|
Добавлено: Пн, 15 Сен, 2008 16:08 Заголовок сообщения: |
|
|
(можно по Location с проверкой Referer)
а реферрером должен быть что-то типа RID, СУЩЕСТВУЮЩЕГО В БАЗЕ
Иначе отдавать 401/404 или 500 _________________ сервис DNS | разные http, DNS и прочие утилиты |
|
| Вернуться к началу |
|
 |
noLove Два пингвина


Зарегистрирован: 25.04.2007 Сообщения: 352
18114 
|
Добавлено: Пн, 15 Сен, 2008 16:14 Заголовок сообщения: |
|
|
| lazutov писал(а): | (можно по Location с проверкой Referer)
а реферрером должен быть что-то типа RID, СУЩЕСТВУЮЩЕГО В БАЗЕ
Иначе отдавать 401/404 или 500 |
это как? можно примерчик? _________________ Друзья, уважайте труд других
http://xternalx.com - моя хомпага
 |
|
| Вернуться к началу |
|
 |
lazutov while (1==1);


Зарегистрирован: 30.04.2007 Сообщения: 3840
111220 
|
Добавлено: Пн, 15 Сен, 2008 17:09 Заголовок сообщения: |
|
|
| Цитата: | <?php
// settimelimit errorreporting и блаблабла
$filename = 'i.zip';
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){
// 403
header ("HTTP/1.0 403 Forbidden");
exit;
}
/*
Аналогичным образом можно отдать ошибки при отсутствии ID в DB
*/
// Если запрашивающий агент поддерживает докачку
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($handle,512);
print($buf);
// тута можно sleep(1) и править второй аргумент fread для ограничения по скорости
}
fclose($handle);
?> |
_________________ сервис DNS | разные http, DNS и прочие утилиты |
|
| Вернуться к началу |
|
 |
AlfaUngzipper Два пингвина


Зарегистрирован: 23.02.2007 Сообщения: 370 Откуда: Halle (Saale) 4 
|
Добавлено: Пн, 15 Сен, 2008 17:21 Заголовок сообщения: Re: Временная ссылка на файл. как это работает? |
|
|
| noLove писал(а): | | Неужели на миллион ссылок делается миллион копий файлов, или есть более красивый способ? |
symlink
Это как ярлыки. Их может быть хоть три миллиона на один файл. |
|
| Вернуться к началу |
|
 |
lazutov while (1==1);


Зарегистрирован: 30.04.2007 Сообщения: 3840
111220 
|
|
| Вернуться к началу |
|
 |
noLove Два пингвина


Зарегистрирован: 25.04.2007 Сообщения: 352
18114 
|
Добавлено: Пн, 15 Сен, 2008 18:32 Заголовок сообщения: |
|
|
lazutov, спасибо! я думал о том варианте что ты привел, но не додумал его до конца...
Спасибо за пример еще раз! ) _________________ Друзья, уважайте труд других
http://xternalx.com - моя хомпага
 |
|
| Вернуться к началу |
|
 |
Михаил Сорокин Интернет на завтрак


Зарегистрирован: 15.09.2008 Сообщения: 28 Откуда: Самара 815 
|
Добавлено: Ср, 17 Сен, 2008 13:12 Заголовок сообщения: |
|
|
что то я не понял. как мне кажеться разговор идет о временной сылке, а не о подмени реальной ссылки _________________ Все могут попасть в рай, самое главное во время подчистить логи (с) r57 |
|
| Вернуться к началу |
|
 |
noLove Два пингвина


Зарегистрирован: 25.04.2007 Сообщения: 352
18114 
|
Добавлено: Ср, 17 Сен, 2008 13:48 Заголовок сообщения: |
|
|
| Михаил Сорокин писал(а): | | что то я не понял. как мне кажеться разговор идет о временной сылке, а не о подмени реальной ссылки |
Товарищ lazutov показал именно то, что мне и было нужно =)) _________________ Друзья, уважайте труд других
http://xternalx.com - моя хомпага
 |
|
| Вернуться к началу |
|
 |
Alek$ 11 1110 1000


Зарегистрирован: 24.11.2007 Сообщения: 1136 Откуда: Новосибирск 26695 
|
|
| Вернуться к началу |
|
 |
|