Совсем детский вопросик. Вот есть у меня страничка с кучей ссылок на файлы, реально лежащие в доступной подпапочке. Доступ к страничке - только через логин/пароль/session_start, иначе выбрасываем на login.php
Но. Если уже один раз тут был, то файлики можно скачать без всякого пароля, напрямую по старой ссылке. Как запретить это?
[решено] сессии php и скачивание файлов (одно другому - нужно, чтобы мешало)
Модератор: Модераторы разделов
-
- Сообщения: 847
- ОС: archlinux
Re: [решено] сессии php и скачивание файлов
То есть еще раз. Есть папка /data/ с кучей файлов и файлик index.php со ссылками на эти файлы примерно такого вида: Ну и любой юзер может обратиться по адресу http://я/data/файлег1 и всё скачать, и никакие сессии его не пропалят. Как в таких случаях исправляют ситуацию?
Код: Выделить всё
<?php
session_start();
if(!isset($_SESSION['logged_user'])){
header("Location: login.php");
exit;
}
?>
<a href="/data/файлег1">сцылко1</a>
<a href="/data/файлег2">сцылко2</a>
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: [решено] сессии php и скачивание файлов
Как вариант: папку data поместить куда подальше (чтоб веб-сервер напрямую не давал скачивать эти файлы, например выше корня). А скачивание сделать через отдельный скрипт, который будет читать файл и выдавать его как данные. Выглядеть это будет как: download.php?file=файлег1. Для пользователя. А этот download.php пусть проверяет всё, что надо.
PS единственно для докачки, придётся немного помудрить... хотя должны быть уже готовые аналогичные скрипты.
PS единственно для докачки, придётся немного помудрить... хотя должны быть уже готовые аналогичные скрипты.
Спасибо сказали:
-
- Сообщения: 847
- ОС: archlinux
Re: [решено] сессии php и скачивание файлов
Во, нашел http_send_file - это оно, да? (побежал пробовать)
-
- Сообщения: 847
- ОС: archlinux
Re: [решено] сессии php и скачивание файлов
Хорошо, собрал pecl-http, работает, только надо еще ведь http_send_content_type говорить правильно, а то он у меня картинку в браузере показывает как крокозябры
Как его правильно задать? (по прямой ссылке всё корректно работает).
(ну я, сидя на gentoo, стараюсь юзать очень минимальный apache, всего два модуля собрал - authz_host и dir
)

(ну я, сидя на gentoo, стараюсь юзать очень минимальный apache, всего два модуля собрал - authz_host и dir

-
- Сообщения: 847
- ОС: archlinux
Re: [решено] сессии php и скачивание файлов
Ладно, вот так меня устраивает.
Код: Выделить всё
http_send_content_disposition($_GET['file'], true);
http_send_content_type("application/x-octetstream");
http_send_file("папко".$_GET['file']);
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: [решено] сессии php и скачивание файлов
Код: Выделить всё
http_send_content_type("application/x-octetstream");
для картинки
Код: Выделить всё
http_send_content_type("image/jpeg");
http_send_content_type("image/png");
http_send_content_type("image/gif");
-
- Сообщения: 847
- ОС: archlinux
Re: [решено] сессии php и скачивание файлов
Ну вопрос-то был, как угадывать, картинка у нас или что.
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
-
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: [решено] сессии php и скачивание файлов
А что, в php (или на чём вы пишете?) нет стандартных функций/библиотек для определения mime-type?
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
-
- Сообщения: 3408
- Статус: аватар-невидимка
- ОС: openSUSE Tumbleweed x86_64
Re: [решено] сессии php и скачивание файлов
Спасибо сказали: