Скажите как можно сделать временную ссылку на файл, которая будет меняться при каждом нажатии на ссылку скачать
хранить в базе путь к файлу, например file_id int, file_path varchar , сделать табличку для временных ссылок, например: link_id int, expire date, file_id int при генерации ссылки на файл, вставляем запись во вторую таблицу и формируем ссылку вида mysite/download.php?link_id=123 скрипт download.php берет присланный ему link_id, лезет во вторую таблицу, смотрит, что там действительно есть такая запись, и что она не expire, далее лезет в первую таблицу по file_id, берет от туда путь, читает файл с диска и пишет в респонс. при успешной отдаче удаляет запись из второй таблицы по link_id это упрощенно.
Можно построить какой-либо алгоритм, к примеру. Есть у нас имя файла, мы передаёт его ASCII, но при этом в начальных байтах указываем порядок, в котором читать. Так же можно сделать метки на случаи дифтонгов в словах (tOUch, cOUch), представить в реверсии суффиксы, аффиксы и делать разбор.
Будет =) Но количество возможных комбинаций имени файла зависит от его длины, а начальные байты могут указывать на количество и порядок этих байт. Т.е можно залить бесполезными и указать его в качестве начальной метки. Этот вариант чисто теоретический, на практике он никому нахер не нужен =)
как вы при таком подходе предлагаете ограничить действие ссылки, чтоб ей можно было воспользоваться один только раз?
каждый раз генерировать уникальный ключ и заносить в базу. как только произошёл доступ по данному ключу - блокировать его или вообще удалить из базы.
response - ответ сервера. в нашем случае, то, что генерит пхп-скрипт. например так: PHP: header('Content-Type: application/octet-stream'); $content = file_get_contents('c:/php/php.ini'); echo($content);
А вот к примеру человек перешел по ссылке test.ru/a1/FJhghGHvb как мне узнать a1 и FJhghGHvb Надо использовать HTTP_REFERER а дальше как разбить ссылку на части
эм если у меня ссылка вида test.ru/a1/FJhghGHvb , то лично у меня она сделана через .htaccess в оригинале тип такого test.ru/?a=1&dl=FJhghGHvb детали не важны и в скрипте при .htaccess по ссылке test.ru/a1/FJhghGHvb получаю $_GET['a'] и $_GET['dl'] ну и как обрабатывать полученное надеюсь знаете
товарища понесло. ты отклоняешься от курса. определись сначала, что тебе нужно, сформулируй четко задачу. правильно поставленный вопрос составляет половину решения.
И почему это header не работает: Код (Text): $url="http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; include('bd.php'); $sql="SELECT file_id FROM pages WHERE link='$url'"; $res=mysql_query($sql); $res=mysql_result($res,0); $sql1="SELECT link FROM files WHERE id='$res'"; $res1=mysql_query($sql1); $res1=mysql_result($res1, 0); header("Content-Type: application/octet-stream'"); header('Content-Disposition: attachment; filename="earth.jpg"');
header("Content-Type: application/octet-stream'"); Где открывающая одинарная кавычка? header('Content-Disposition: attachment; filename="earth.jpg"'); Двойные в одинарных работать не будут, только одинарные внутри двойных agent669212 Скачай себе Нетбинс например. Хотя, если ты оставишь веб-программирование в покое, всем станет легче
Не, я может и туплю, бывает зачастую)) подскажи тогда, в каком случае Parse Error: Encapsed and Whitespace возникает? Ps. Наверное путаю с echo "$var['blabla']"
Примени три магических камня: - редирект - символические ссылки - чистильщик по cron или по 1/N запросу (как gc для сессий) Файлы лежат в закрытой для прямого чтения папке. Скрипт download после проверки прав создает симлинк со случайным именем в открытой папке и сразу делает на него редирект. Время от времени надо удалять симлинки с возрастом старше, скажем, 24 часа.
p.s. чтобы файл отдавался с "правильным" именем и при этом избегать не-ascii имен на диске, можно применить хак через mod_rewrite: отдавать ссылку в виде mysite.com/jdKshkHkuwkJhdsk/хуйнанэ.jpg которая фактически соответствует симлинку mysite.com/download/jdKshkHkuwkJhdsk.link которая реально смотрит на файл /out/of/document/root/file/storage/e4f08712ab.dat
Offtopic: О! здесь работает "цензура"? А где можно посмотреть как она работает? Я очень сильно интересуюсь! хyйнанэ -> фиг