Скачивание с ftp

Тема в разделе "PHP", создана пользователем Marzocchi66, 24 июн 2011.

Модераторы: latteo
  1. Marzocchi66

    Marzocchi66 Постоялец

    Регистр.:
    23 сен 2010
    Сообщения:
    54
    Симпатии:
    0
    <Здравствуйте!>
    Есть папка на ftp с файлами, на сайте есть ссылка на этот файл.Ссылку видят только авторизованные пользователи.
    Авторизованный пользователь может скопировать эту злощавую ссылку не авторизованному, который без угрызений совести скачает этот файл.
    Вопрос в том, как запретить скачать файлы не авторизованным?
    Грубо говоря логика такова...

    если авторизован то (
    сюда нужно сделать формирование ссылки)
    елсе (
    ошибка!вы не имеете доступа)

    Был вариант средствами пхп ставить права на папки, но не разобрался как запретить именно скачивание.
    Ещё был варинт через .htaccess, но если там запретить, то авторизованные тоже не смогу скачивать.
    Подскажите куда копать, пожалуйста!
    </Спасибо!>
     
  2. 3xmaster

    3xmaster

    Регистр.:
    19 июн 2007
    Сообщения:
    552
    Симпатии:
    130
    Так всё же - на ФТП или на сайте? Как юзеры имет доступ?
    Что-то мне подсказывате, что ФТП тут вообще не причем.
    Кури авторизацию в пхп. Делается достаточно просто.

    Не вариант вообще.

    А это как раз правильный ход мыслей.

    В общем кури авторизацию..
     
    Marzocchi66 нравится это.
  3. tartas

    tartas

    Регистр.:
    5 сен 2010
    Сообщения:
    294
    Симпатии:
    29
    Авторизация чаще всего висит в кукисах, уверен у тебя на сайте уже написана функция проверки авторизации. Найди эту функцию или поставь проверки по кукису и дело в шляпе.
    Кукисы посмотреть так $_COOKIE[$CookieName]
     
    Marzocchi66 нравится это.
  4. cwman

    cwman

    Регистр.:
    4 май 2008
    Сообщения:
    465
    Симпатии:
    549
    можно не давать прямую ссылку на файл, а давать ссылку через скрипт
    этим скриптом проверять авторизирован пользователь или нет
    вообщем как то так
     
    Marzocchi66 нравится это.
  5. Marzocchi66

    Marzocchi66 Постоялец

    Регистр.:
    23 сен 2010
    Сообщения:
    54
    Симпатии:
    0
    3xmaster , не на ftp, а на веб-сервере, если так удобнее.
    Авторизация уже реализована, нужно выдать ссылку таким образом, чтобы только авторизованный мог по не пройти.
    Вот такое нарыл blog.webmasterschool.ru/php/250/

    tartas, с куками не приходилось работать, можешь дать какие-то мануалы?

    cwman, по-подробнее пжл)
    Т.е. 1 - чел заходит на сайт(не авторизован ещё) и видит ссылку на файл?
    2 - жмёт на ссылку и попадает на страницу авторизации
    3 - если может, авторизовывается и получает ссылку на файл
    4 - скачивает и может кинуть эту ссылку другому челу?
     
  6. tartas

    tartas

    Регистр.:
    5 сен 2010
    Сообщения:
    294
    Симпатии:
    29
    Меня PHP.net всегда выручал по таким делам, отличный справочник.

    Или возьми любой форумный движок и там увидишь на практике как это делают, т.к. все форумы используют куки для авторизации.
     
    Marzocchi66 нравится это.
  7. cwman

    cwman

    Регистр.:
    4 май 2008
    Сообщения:
    465
    Симпатии:
    549
    Человек заходит на сайт
    Может авторизоваться, а может и просто так побродить
    Находит файл, который хочет скачать.
    Нахимает на ссылку. Вызывается скрипт , который проверяет авторизирован человек или нет. Если нет то выводит страницу с сообщением о необходимости авторизации. Если авторизирован то формирует ссыоку для скачивания. Но ссылка для скачивания будет действительна только для конкретного компьютера (реализация в скриптах защиты от хотлинка , пример реализации на ifolder.ru). Таким образом ссылку для скачивания можно получить только авторизированному пользователю.
    Один минус авторизированный пользователь может скачать и выложить на другом файлообменнике то что защищается
     
    Marzocchi66 нравится это.
  8. Marzocchi66

    Marzocchi66 Постоялец

    Регистр.:
    23 сен 2010
    Сообщения:
    54
    Симпатии:
    0
    Нашел как сделать, но не могу разобраться.

    1)кинул файлы в папку...
    2)в папке хтаксес (deny all)
    3)создаём download.php, в файле прописываем что-то вроде:

    $file = ("file.txt"); //с текстом 123
    header ("Content-Type: application/octet-stream");
    header ("Accept-Ranges: bytes");
    header ("Content-Length: ".filesize($file));
    header ("Content-Disposition: attachment; filename=".$file);
    readfile($file);

    Теперь обращаясь к файлу download.php начинается скачка file.txt, но содержимое файла это хтмл-код страницы((

    Вот как мне вывести список файлов из папки и чтобы по клику пхп скрипт отдавал мне выбранный файл через заголовки?

    Допустим, список файлов вывели, ссылка будет на download.php?
     
  9. e64f

    e64f Постоялец

    Регистр.:
    2 ноя 2008
    Сообщения:
    95
    Симпатии:
    6
    А внутри текст (123) есть? Может download.php в той же папке что а file.txt, та папка которая deny, и выдается какой нибудь 404.html
    Попробуйте download.php в папке выше, и полный путь к файлу.

    Насчет как вывести список файлов
    http://php.net/manual/en/function.readdir.php

    И да, ссылки должны быть через download.php


    Но по хорошему лучше сделать хранение списка файлов в табличке, и по номерам давать скачивать download.php?file=2 естественно проверяя авторизацию.
     
    Marzocchi66 нравится это.
  10. Marzocchi66

    Marzocchi66 Постоялец

    Регистр.:
    23 сен 2010
    Сообщения:
    54
    Симпатии:
    0
    Решил через куки сделать:

    вот так формируется список

    echo "<a href='http://promsd.ru/download.php?file=".$file['name']."'>".$file['name']."</a>

    вот сам доунлоад.пхп


    if (isset($_COOKIE['download']))
    {
    $file = $_GET['file'];
    header('HTTP/1.1 200 Ok');
    header('Content-Type: application/octet-stream');
    header('Content-Transfer-Encoding: binary');
    // сообщаем браузеру, что мы передаём файл для скачивания, сообщая имя файла
    header('Content-Description: File Transfer');
    header('Content-Disposition: attachment; filename='.$file);
    // и размер файла
    header('Content-Length: '.$filesize);
    // читает файл и записывает его в буфер вывода
    readfile($file);
    }


    Кликая по ссылке в списке, то выдаёт сообщенеи что не авторизован.
    Если пройти по прямой ссылке на download.php?file=filename тоже выдаёт сообщение что не авторизован

    Кука download создаётся при авторизации.
    Что делать?Я запутался((