Как скачать пхп файл?

(Ответов: 9, Просмотров: 1290)
  1. Опытный
    • Регистрация: 25.05.2013
    • Сообщений: 312
    • Репутация: 32
    В общем пишу цмс свою, хочу встроить туда файлообменник, интересуют способы, как скачивать файлы??? Не могу понять и все, при переходе на файл, они запускаются, или работают в режиме чтения, а мне надо, чтобы абсолютно любой файл скачивался! Заранее спасибо за помощь!
    • 0
  2. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от qwer555 Посмотреть сообщение
    они запускаются, или работают в режиме чтения
    а как вы ожидаете что будут работать php файлы?

    если я правильно понял вас, то вам нужно сделать чтобы можно было загружать и скачивать файлы с любыми расширениями, в частноcти .php

    для этого вам нужно будет создать в бд табличку в которой будут все параметры файла, например:
    PHP код:
    path // путь к файлу
    physical_filename // имя файла на диске, без расширения(для безопасности, чтобы теже php файлы не исполнялись, а просто лежали), например MD5 хеш f3fe33ae3202afa2b1aff9cb4d3b68c5
    real_filename // реальное имя файла, например: мой файл.txt
    dl_count // счетчик скаиваний
    attach_comment // коментарий
    extension // расширение файла, пример: txt
    mimetype // пример: application/text
    filesize // размер файла в байтах
    filetime 
    и файл php, при обращении к которому будут отдаваться файлы на скачивание.
    например:
    PHP код:
        $attach_id $id//id запрашиваемого файла
        
    $result mysql_query("SELECT * FROM files WHERE attach_id='$attach_id'");
        
    $attachment mysql_fetch_array ($result);

        
    $filename "content/".$attachment['path']."/" $attachment['physical_filename'];
        
    //$size = @filesize($filename);
        
    $size $attachment['filesize'];

        
    header('Pragma: public');
        
    //header("Pragma: no-cache"); // HTTP/1.0
        
    header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
        
    header("Cache-Control: post-check=0, pre-check=0"false);

        
    header('Content-Type: ' $attachment['mimetype']);

        
    header('Content-Disposition: attachment; ' .htmlspecialchars_decode($attachment['real_filename'].'.'.$attachment['extension']);


        if (
    $size){    header("Content-Length: $size"); }

        
    // обновляем счетчик скачиваний
        
    mysql_query('UPDATE files SET dl_count = dl_count + 1 WHERE attach_id = '.$attachment['attach_id']); 
    писал на скорую руку, но думаю принцип понятен

    пример скачивания можно посмотреть тут: _http://starnox.ru/books/mysql/razrabotka-web-prilojenii-na-php-i-mysql.html
    нажми на скачать книгу
    • 2

    Спасибо сказали:

    OKyJIucT(11.08.2013), qwer555(11.08.2013),
  3. Опытный
    • Регистрация: 25.05.2013
    • Сообщений: 312
    • Репутация: 32
    Спасибо, а вы бы не могли объяснить по заголовкам??? не очень пойму их!
    • 0
  4. Sunshine reggae Аватар для OKyJIucT
    • Регистрация: 02.09.2011
    • Сообщений: 3,240
    • Репутация: 1830
    • Webmoney BL: ?
    qwer555, вот тут пример #1 есть отличный для скачивания файла, или тут с подробными комментариями. Еще как вариант, можно в архив zip добавлять файлы, и на них давать прямую ссылку (можно и динамичную, которая существует ограниченное время).

    А про дополнительную таблицу в БД - на мой взгляд, это перебор, зачем все усложнять. Путь к файлу можно хранить в таблице в новостями, а все данные о файле получать сразу в скрипте стандартными PHP функциями, которые можно посмотреть во втором примере
    Последний раз редактировалось OKyJIucT; 11.08.2013 в 12:54.
    • 1

    Спасибо сказали:

    qwer555(11.08.2013),
  5. Гуру
    • Регистрация: 09.10.2011
    • Сообщений: 1,813
    • Репутация: 251
    Цитата Сообщение от OKyJIucT Посмотреть сообщение
    А про дополнительную таблицу в БД - на мой взгляд, это перебор, зачем все усложнять.
    Например для ограничения доступа к файлам.
    • 0
  6. Дипломник Аватар для Removal Of Brain
    • Регистрация: 23.04.2012
    • Сообщений: 99
    • Репутация: 25
    qwer555,Запрети добавление php, php3,php4,php5 и других исполняемых файлов вообще лучше.
    Кому надо, те в архив запихнут
    • 0
  7. Гуру Аватар для 3s777
    • Регистрация: 09.02.2013
    • Сообщений: 1,417
    • Репутация: 384
    • Webmoney BL: ?
    Цитата Сообщение от qwer555 Посмотреть сообщение
    они запускаются, или работают в режиме чтения
    Сделай добавление только zip или rar файлов, тогда они не будут запускаться, будут качаться.
    • 0
  8. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от OKyJIucT Посмотреть сообщение
    А про дополнительную таблицу в БД
    как сказал pyramida - для ограничения доступа к файлам, + у меня разделение файлов на группы есть, + возможность загрузки/скачивания разных групп файлов, для разных групп пользователей.
    вообще гибкость дает, если коротко )
    а так да, мона и в скрипте запроса сразу все делать. у меня просто этот файл-обработчик не только файлы обрабатывает... а вообще запросы многие..

    Цитата Сообщение от 3s777 Посмотреть сообщение
    добавление только zip или rar файлов
    согласен, я тоже не даю окромя архивов, аватарок и текстовых файлов ничего скачивать/закачивать.
    чревато последствиями, так скажем) если не уследишь )

    qwer555, я бы посоветовал тебе для начала попроще написать что нить, потом уже будешь заморачиваться с группами, ограничениями итп..

    и по теме заголовков: в частности Content-Disposition: attachment; заставляет браузер сохранять файл, вместо открытия в браузере.
    но он же как бы "обязывает" использовать Content-Type и Content-Length.

    удачи в написании..
    Последний раз редактировалось cOAPerator; 11.08.2013 в 17:23.
    • 1

    Спасибо сказали:

    qwer555(11.08.2013),
  9. Опытный
    • Регистрация: 25.05.2013
    • Сообщений: 312
    • Репутация: 32
    Цитата Сообщение от cOAPerator Посмотреть сообщение
    qwer555, я бы посоветовал тебе для начала попроще написать что нить, потом уже будешь заморачиваться с группами, ограничениями итп..

    и по теме заголовков: в частности Content-Disposition: attachment; заставляет браузер сохранять файл, вместо открытия в браузере.
    но он же как бы "обязывает" использовать Content-Type и Content-Length.

    удачи в написании..
    Спасибо, да написать то написал, а вот половина просто открывается а не качается! Хочу качественно написать, тк не кому-то, а себе пишу)))
    • 0
  10. [web-developer] Аватар для cOAPerator
    • Регистрация: 22.02.2011
    • Сообщений: 615
    • Репутация: 111
    • Webmoney BL: ?
    Цитата Сообщение от qwer555 Посмотреть сообщение
    Хочу качественно написать, тк не кому-то, а себе пишу)))
    ну это логично) стучи в скайп, поглядим что у тебя там.
    • 0

Тэги топика:

Похожие темы

Темы Раздел Ответов Последний пост
Скачать сайт.
Софт, скрипты, сервисы 3 07.11.2011 21:00
сайты тематики скачать софт, скачать игры, для ПК и молбильного
Покупка продажа сайтов 0 02.09.2011 14:39
скачать рэинметер
Реклама партнерских программ 0 07.01.2011 10:15
Как скачать swf
Прочее 2 28.11.2010 23:50
Чем скачать сайт?
Софт, скрипты, сервисы 16 08.09.2009 13:46

У кого попросить инвайт?

Вы можете попросить инвайт у любого модератора:

Информеры