Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скачивание файлов 
:(
    Опции темы
a.S.d
Дата 5.4.2005, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.2.2005

Репутация: нет
Всего: 2



Нужно ограничить скачивание файлов с сервера. Допустим посетитель кликает по ссылке чтобы скачать фаил. Скрипт, отвечающий за скачивание файлов, проверяет какое-то условие и либо разрешает скачивать, либо нет. Как сделать, чтобы в случае успеха фаил начал скачиваться (т.е. запустился диалог "загрузка файла")?
PM MAIL   Вверх
penizillin
Дата 5.4.2005, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 10.11.2004

Репутация: 8
Всего: 9



например header().
PM MAIL ICQ   Вверх
a.S.d
Дата 5.4.2005, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.2.2005

Репутация: нет
Всего: 2



а header() с какими параметрами?
И при чём он тут? Он же просто задаёт заголовок.

Это сообщение отредактировал(а) a.S.d - 5.4.2005, 23:24
PM MAIL   Вверх
penizillin
Дата 6.4.2005, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 312
Регистрация: 10.11.2004

Репутация: 8
Всего: 9



http://www.php.net/header
почитайте, вам понравится.
PM MAIL ICQ   Вверх
a.S.d
Дата 8.4.2005, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.2.2005

Репутация: нет
Всего: 2



сделал следующий скрипт:
пример использования: "download.php?file=asd.rar"
Код

<?
session_start();
session_register("auth");
if($auth==1)  //проверка авторизации
{
header("Content-Disposition: attachment; filename=$file");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
header("Content-type: application/x-download");
@readfile($file);
}
else
echo("Вы не авторизованы");
?>

Так вот всё работает, если не использовать сессию. А в данном случае выдаётся ошибка: "Не удаётся открыть этот узел интернета. Узел не доступен или не найден. Повторите попытку позднее." Почему это происходит?
PM MAIL   Вверх
a.S.d
Дата 9.4.2005, 01:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.2.2005

Репутация: нет
Всего: 2



Я понял в чём дело, просто session_start() тоже отправляет заголовки smile
Не знаете, каким образом ещё можно проверить авторизацию?
PM MAIL   Вверх
DarkLight
Дата 9.4.2005, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 10.1.2004
Где: София

Репутация: нет
Всего: нет



Да нет - я делаю это именно через Header, и юзаю session_start и проверка авторизацию.
Только зачем в этом скрипте session_register("auth"); - это надо делать когда авторизируеш пользователя

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

P.S. В документации PHP есть пример для скачивания с header()

Это сообщение отредактировал(а) DarkLight - 9.4.2005, 11:59
PM MAIL   Вверх
a.S.d
Дата 9.4.2005, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.2.2005

Репутация: нет
Всего: 2



DarkLight
Если не использовать session_register("auth"), то пхп говорит про неизвестную переменную.
Да и запости пожалуйста свой скрипт, а то я уже думал сделать введение пароля при каждом скачивании smile
PM MAIL   Вверх
DarkLight
Дата 10.4.2005, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 10.1.2004
Где: София

Репутация: нет
Всего: нет



a.S.d
А у тебя какая версия PHP?
(Завтра напишу скрипти для ауторизации и скачивания, у меня дома их нет)
PM MAIL   Вверх
DarkLight
Дата 11.4.2005, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 10.1.2004
Где: София

Репутация: нет
Всего: нет



Код

session_start();
if(  !isUserLoggedIn() ){
    header("Location: blank.php");
    exit;
}

function downloadFile($path, $name, $mime){
    if ($fd = fopen ($path, "r")){
        $disposition = "attachment"; // "inline" to view file in browser or "attachment" to download to hard disk
        //$mime = "image/jpeg"; // or whatever the mime type is
        //$name = "foo.jpg"; // file name
        //$path = "/path/to/foo.jpg"; // full path and file name

        if (isset($_SERVER["HTTPS"])) {
            /**
            * We need to set the following headers to make downloads work using IE in HTTPS mode.
            */
            header("Pragma: ");
            header("Cache-Control: ");
            header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
            header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
            header("Cache-Control: no-store, no-cache, must-revalidate"); // HTTP/1.1
            header("Cache-Control: post-check=0, pre-check=0", false);
        }
        else if ($disposition == "attachment") {
            header("Cache-control: private");
        }
        else {
            header("Cache-Control: no-cache, must-revalidate");
            header("Pragma: no-cache");
        }
        header("Content-Type: $mime");
        header("Content-Disposition:$disposition; filename=\"".trim(htmlentities($name))."\"");
        header("Content-Description: ".trim(htmlentities($name)));
        header("Content-Length: ".(string)(filesize($path)));
        //header("Connection: close");
        while(!feof($fd)) {
            $buffer = fread($fd, 2048);
            print $buffer;
        }
        fclose ($fd);
        unlink($path);
        rmdir(dirname($path));
    }
}


Код

function isUserLoggedIn() {

 if( isset( $_SESSION["user"] ) ) {
    return true;
 }
 return false;

}


Работаеть в PHP 4.3

Это сообщение отредактировал(а) DarkLight - 11.4.2005, 11:24
PM MAIL   Вверх
a.S.d
Дата 11.4.2005, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.2.2005

Репутация: нет
Всего: 2



DarkLight
Спасибо за скрипт, вроде всё работает, но хотелось бы узнать почему не работает мой скрипт.
PM MAIL   Вверх
a.S.d
Дата 24.4.2005, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 20.2.2005

Репутация: нет
Всего: 2



А какой заголовок нужно передать, чтобы скачивался *.rar фаил, а то ослик и опера не узнают application/x-download?
PM MAIL   Вверх
$дмитрий
Дата 24.4.2005, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 19.6.2004

Репутация: 17
Всего: 45



для оперы
Код


header("Content-Type: application/x-rar-compressed");
header("Content-Disposition: attachment; filename=" . $file. ";");
header("Accept-Ranges: bytes");
header("Content-Length: " . $size ); //размер файла
readfile($file);


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1105 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.