Показать полную графическую версию : Как удалить файл???
Тут вопрос один... Никто не подскажет как сделать так чтобы ПХП сам автоматически удалял файл вместе с временной папкой после того как его скачал пользователь???!!! Написал скрипт, который посылает запрос на поиск файла на серваке, и в случае если имеется таковой, создает случайную временную директорию и копирует туда этот файл. Это для того чтобы повально не скачивали. Но зашел в тупик когда захотел сделать так чтобы он автоматически удалял теперь файл с папкой после его скачивания. Знаю опцию is_uploaded_file, но нет опции is_downloaded_file :(
Vlad Drakula
08-10-2004, 20:47
Kasap
ну можно чтонибуть придумать с помощью MySQL.
например давать доступ на некоторое время а потом удалять!
vadimiron
08-10-2004, 23:20
А что выдаётся, если скрипт пытается удалить файл, который в данный момент скачивается юзером??
Может какой то код ошибки??
Тогда можно так сделать, при каждым вызове скрипта пытаемся удалить все временные файлы, если ошибка (то есть юзер ещё не закачал), то оставляем в покое этот файл, а если файл удалился без проблем, то значит задание выполнено :)
Но тут появляется сразу первая проблема: а если у юзера связь оборвалась и он будет докачивать через пару минут??? А мы в эти пару минут удаляем файл :( не порядок.
Можно ещё смотреть, как давно файл является временным, например предположить, что юзер должен за час скачать файл, тогда все файлы, созданные более часа назад, удаляем
Prisoner
09-10-2004, 02:58
Kasap
Это довольно затруднительно. Могу порекомендовать поставить антилич какой-нибудь. Это избавит от заботы что-либо отслеживать и удалять и решит проблему.
Спасибо за советы,
Prisoner хотелось бы узнать что такое Антилич , и вообще проблема удаления файлов по факту скачивания стоит, возможен ли такой скрипт который бы их удалял после того как их скачали, как можно вообще проверить если кто то уже коннектился?
Kasap
по поводу -
возможен ли такой скрипт который бы их удалял после того как их скачали
по-моему, исходя из протокола HTTP, мы можем сказать только, что файл был запрошен и сервер начал его отдавать. Докачал ли его пользователь, мы не знаем. Для подтверждения этого надо пользоваться чем-то на стороне клиента, что закачивает и давало бы сигнал о конце скачивания на сервер. *Причем, стоит иметь в виду, что в броузерах *работа с файловой как в Java-апплетах, так даже и в ActiveX + VBScript(JScript) ограничены по соображениям безопасности. Так что как бы тонкого клиента писать не пришлось ;)
Резюме - стоит дождаться ответа Prisoner про Антилич :)
Prisoner
10-10-2004, 04:36
:)
Просто применение антилича тут как раз в тему (если я верно понимаю смысл первого поста). А зверь этот дает скачивать файлы с твоего сайта только посетителям, пытающихся же закачать твой файл по ссылке (с другого сайта) посылают ибо нефиг. А то представь себе хотя бы 50 пользователей качающих твой файлик по твоей системе - 50 копий, а с растущим размером файла число одновременных закачек тоже увеличивается, не так ли? То есть алгоритм такой: нашелся файл, передать пользователю ссылку через антилич, что скроет расположение файла на сервере и не даст "халявщикам" не смотреть на твои баннеры :).
А просто установить "живучесть" файла? Это конечто не самое лучшее, но если другого выхода нет то и это сойдет.
А просто установить "живучесть" файла
то есть дать ему 30 минут на время жизни и тереть? не лучший вариант: идет человек по диал-апу, тратит деньги и время на закачку с докачкой и, не докачав нескольких килобайт обламывается :/
ИМХО, если учитывать вариант докачки - задача фактически не решабельна.
Тут уважаемые товарищи контекст такой. Предполагается, что файл будет качаться с мобильных телефонов а не с компьютера. А необходимость в удалении нужна для того чтобы пользователь скачав файл однажды не смог скачать его второй раз с того же телефона. Вотъ...
Prisoner - и всетаки что есть Антилич, привди хотя бы пример программы (если это программа) или скрипта соответствующего если можешь
благодарю
Дык:), не легче ли зпомнить IP заходящего?...
Создаешь базу данных в неё "вбиваешь" IP адреса всех, кто когда нить качал файл. Еслю юзер захочет скачать файл - проверяй есть ли такой IP в базе, если есть - то нефиг, если нету - то начинается закачка. Ведь и у трубок "есть свой IP"...
З.Ы. антилич для данной проблемы не нужен... имхо...
vadimiron
10-10-2004, 16:40
Ещё одна мысль: Download-центры - есть много уже готовых таких скриптов, например здесь, написанные на PHP (http://script.woweb.ru/index.htm/c/483). Там есть много всяких интересных функций по управлению скачивания файлов.
А вообще, один из простых и надёжных вариантов-это сделать для каждого юзера свой аккаунт, то есть, чтобы скачивать можно было только введя свои пароль и имя, и удалять файл часа через 12 после его создания. А юзеру так и выдавать: "Внимание, после нажатия на кнопку СКАЧАТЬ файл будет доступен для скачивания в течение 12 часов. Далее файл будет удалён"
Добавлено:
mar
исходя из протокола HTTP, мы можем сказать только, что файл был запрошен и сервер начал его отдавать
А с помощью HTTP можем мы узнать сколько байтов было загружено??
По-моему такое можно с помощью управления ftp-сервером сделать. Если эту информацию как то можно получить, то тогда считаем сколько байтов загружено и сколько всего весит файл, если значения равны->удаляем
??
Исправлено: vadimiron, 14:59 10-10-2004
Кажись нельзя такую инфу получить. Серверу без разницы сколько с него выкачали.. Или я заблуждаюсь?:o
Исправлено: XCoder, 18:09 10-10-2004
А с помощью 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
Таинственного? Предложенные тобой, mar, скрипты и есть таинственные антиличи... у первого это даже недвусмысленно подчекнуто в названии :).
Prisoner
а я решила, что это личи, а есть еще какие-то анти :biglaugh:
Антилич как раз для этого и предназначен, тоесть ссылка для скачивания файла работает только один раз!
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.