Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Как удалить файл??? (http://forum.oszone.net/showthread.php?t=30969)

Kasap 08-10-2004 19:21 212428

Тут вопрос один... Никто не подскажет как сделать так чтобы ПХП сам автоматически удалял файл вместе с временной папкой после того как его скачал пользователь???!!! Написал скрипт, который посылает запрос на поиск файла на серваке, и в случае если имеется таковой, создает случайную временную директорию и копирует туда этот файл. Это для того чтобы повально не скачивали.  Но зашел в тупик когда захотел сделать так чтобы он автоматически удалял теперь файл с папкой после его скачивания. Знаю опцию is_uploaded_file, но нет опции is_downloaded_file :(

Vlad Drakula 08-10-2004 20:47 212429

Kasap
ну можно чтонибуть придумать с помощью MySQL.

например давать доступ на некоторое время а потом удалять!

vadimiron 08-10-2004 23:20 212430

А что выдаётся, если скрипт пытается удалить файл, который в данный момент скачивается юзером??
Может какой то код ошибки??
Тогда можно так сделать, при каждым вызове скрипта пытаемся удалить все временные файлы, если ошибка (то есть юзер ещё не закачал), то оставляем в покое этот файл, а если файл удалился без проблем, то значит задание выполнено :)
Но тут появляется сразу первая проблема: а если у юзера связь оборвалась и он будет докачивать через пару минут??? А мы в эти пару минут удаляем файл :( не порядок.
Можно ещё смотреть, как давно файл является временным, например предположить, что юзер должен за час скачать файл, тогда все файлы, созданные более часа назад, удаляем

Prisoner 09-10-2004 02:58 212431

Kasap
Это довольно затруднительно. Могу порекомендовать поставить антилич какой-нибудь. Это избавит от заботы что-либо отслеживать и удалять и решит проблему.

Kasap 09-10-2004 16:22 212432

Спасибо за советы,
Prisoner хотелось бы узнать что такое Антилич , и вообще проблема удаления файлов по факту скачивания стоит, возможен ли такой скрипт который бы их удалял после того как их скачали, как можно вообще проверить если кто то уже коннектился?

mar 09-10-2004 18:08 212433

Kasap
по поводу -
Цитата:

возможен ли такой скрипт который бы их удалял после того как их скачали
по-моему, исходя из протокола HTTP, мы можем сказать только, что файл был запрошен и сервер начал его отдавать. Докачал ли его пользователь, мы не знаем. Для подтверждения этого надо пользоваться чем-то на стороне клиента, что закачивает и давало бы сигнал о конце скачивания на сервер. *Причем, стоит иметь в виду, что в броузерах *работа с файловой как в Java-апплетах, так даже и в  ActiveX + VBScript(JScript) ограничены по соображениям безопасности. Так что как бы тонкого клиента писать не пришлось ;)
Резюме - стоит дождаться ответа Prisoner про
Цитата:

Антилич
:)

Prisoner 10-10-2004 04:36 212434

:)
Просто применение антилича тут как раз в тему (если я верно понимаю смысл первого поста). А зверь этот дает скачивать файлы с твоего сайта только посетителям, пытающихся же закачать твой файл по ссылке (с другого сайта) посылают ибо нефиг. А то представь себе хотя бы 50 пользователей качающих твой файлик по твоей системе - 50 копий, а с растущим размером файла число одновременных закачек тоже увеличивается, не так ли? То есть алгоритм такой: нашелся файл, передать пользователю ссылку через антилич, что скроет расположение файла на сервере и не даст "халявщикам" не смотреть на твои баннеры :).

XCodeR 10-10-2004 11:46 212435

А просто установить "живучесть" файла? Это конечто не самое лучшее, но если другого выхода нет то и это сойдет.

mar 10-10-2004 13:43 212436

Цитата:

А просто установить "живучесть" файла
то есть дать ему 30 минут на время жизни и тереть? не лучший вариант: идет человек по диал-апу, тратит деньги и время на закачку с докачкой и, не докачав нескольких килобайт обламывается :/

XCodeR 10-10-2004 14:14 212437

ИМХО, если учитывать вариант докачки - задача фактически не решабельна.

Guest 10-10-2004 16:10 212438

Тут уважаемые товарищи контекст такой. Предполагается, что файл будет качаться с мобильных телефонов а не с компьютера. А необходимость в удалении нужна для того чтобы пользователь скачав файл однажды не смог скачать его второй раз с того же телефона. Вотъ...

Prisoner - и всетаки что есть Антилич, привди хотя бы пример программы (если это программа) или скрипта соответствующего если можешь

благодарю

XCodeR 10-10-2004 16:36 212439

Дык:), не легче ли зпомнить IP заходящего?...
Создаешь базу данных в неё "вбиваешь" IP адреса всех, кто когда нить качал файл. Еслю юзер захочет скачать файл - проверяй есть ли такой IP в базе, если есть - то нефиг, если нету - то начинается закачка. Ведь и у трубок "есть свой IP"...
З.Ы. антилич для данной проблемы не нужен... имхо...

vadimiron 10-10-2004 16:40 212440

Ещё одна мысль: Download-центры - есть много уже готовых таких скриптов, например здесь, написанные на PHP. Там есть много всяких интересных функций по управлению скачивания файлов.

А вообще, один из простых и надёжных вариантов-это сделать для каждого юзера свой аккаунт, то есть, чтобы скачивать можно было только введя свои пароль и имя, и удалять файл часа через 12 после его создания. А юзеру так и выдавать: "Внимание, после нажатия на кнопку СКАЧАТЬ файл будет доступен для скачивания в течение 12 часов. Далее файл будет удалён"

Добавлено:

mar
Цитата:

исходя из протокола HTTP, мы можем сказать только, что файл был запрошен и сервер начал его отдавать
А с помощью HTTP можем мы узнать сколько байтов было загружено??
По-моему такое можно с помощью управления ftp-сервером сделать. Если эту информацию как то можно получить, то тогда считаем сколько байтов загружено и сколько всего весит файл, если значения равны->удаляем
??


[s]Исправлено: vadimiron, 14:59 10-10-2004[/s]

XCodeR 10-10-2004 18:07 212441

Кажись нельзя такую инфу получить. Серверу без разницы сколько с него выкачали.. Или я  заблуждаюсь?:o

[s]Исправлено: XCoder, 18:09 10-10-2004[/s]

mar 10-10-2004 21:54 212442

Цитата:

А с помощью HTTP можем мы узнать сколько байтов было загружено??
сколько отдано по HTTP - нельзя. Это протокол без запоминания. Он отдает файл и забывает о юзере раз и еавсегда. Все остальное - ухищрения скриптов, но и им не преодолеть основу, через которую все работает. *(FTP - вообще другой протокол, там два соединения все время держатся).
Что касается ip, то если они раздаются трубкам динамически - то ничего путного мы тут не выловим. Действительно, самое разумное - вход на 12 часов с предупреждением =)
vadimiron
там (среди скриптов) действительно всего много, но из того, что тут обсуждается, только, пожалуй *FMUKanti Leech 1.0 *- "скрипт для предотвращения несанкционированного скачивания Ваших файлов. Работает с файлами mp3, zip, exe и изображениями. Скрипт скрывает реальный адрес Ваших файлов, может быть использован внутри тега IMG" и Leecher 3 - "использует два метода для защиты Ваших файлов. Первый - использование cookie для перенаправления на выбранный файл. Второй - случайное изменение последних трех символов имени файла." Но учета размера скаченного, естественно, нет :(



Добавлено:

да, совсем забыла :/ - в протоколе HTTP 1.1 есть возможность обеспечения докачки, но, насколько мне помнится, она заключается в том, что в ответ на специальный запрос клиента сервер посылает запрошенный кусок файла. (То есть сам сервер опять-таки докачку не регулирует, и доехал ли искомый кусок до клиента - не знает. Можно, конечно, отлавливать эти самые клиентские запросы, рассчитывать время между кусками и т.д. Но нельзя быть уверенными, что клиенты именно так файлы запросят. Вот  :(
Так что -резюме: пока ничего лучше совета vadimiron (12 часов на раграбление файла =) - не вижу.) - Если только применение таинственного Антилич-а не окажется лучше =)

Prisoner 11-10-2004 05:02 212443

Таинственного? Предложенные тобой, mar, скрипты и есть таинственные антиличи... у первого это даже недвусмысленно подчекнуто в названии :).

mar 11-10-2004 10:12 212444

Prisoner
а я решила, что это личи, а есть еще какие-то анти :biglaugh:

archy 12-10-2004 09:51 212445

Антилич как раз для этого и предназначен, тоесть ссылка для скачивания файла работает только один раз!


Время: 23:06.

Время: 23:06.
© OSzone.net 2001-