Защита загрузок - PullRequest
       27

Защита загрузок

0 голосов
/ 24 марта 2011

Я только что тестировал этот скрипт загрузки ниже. Загрузка работает нормально, но загруженный zip или rar архив всегда поврежден и не может быть открыт. Я протестировал его на локальном сервере разработки, а также на моей учетной записи хостинга.

Я просто пытаюсь узнать, как это работает, но я не совсем понимаю.

Вся помощь приветствуется!

Тестовый код:

<?php
$is_logged_in = 1;
$path_to_file = 'downloads/tes.zip';
$file_name = 'test.zip';

if ($is_logged_in == 1)
{
    header("X-Sendfile: $path_to_file");
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename=\"$file_name\"");
    exit;
}
?>

<h1>Permission denied</h1>
<p>Please Login first!</p>

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Вероятнее всего, что-то добавлено / добавлено в файл. Попробуйте использовать буферизацию и очистку.

<?php
ob_start();
$is_logged_in = 1;
$path_to_file = 'downloads/tes.zip';
$file_name = 'test.zip';

if ($is_logged_in == 1)
{
    $fp = fopen($path_to_file, 'rb');

    if(is_resource($fp))
    {
            ob_clean();
            header("Content-Type: application/force-download");
            header("Content-Length: " . filesize($path_to_file));
            header("Cache-Control: max_age=0");
            header("Content-Disposition: attachment; filename=\"$file_name\"");
            header("Pragma: public");
            fpassthru($fp);
            die;
    }
} else {
    echo "<h1>Permission denied</h1>";
    echo "<p>Please Login first!</p>";
}
0 голосов
/ 24 марта 2011

Вы настроили свой веб-сервер (в частности, Apache) для загрузки mod_xsendfile ? Без этого модуля ваш скрипт по сути ничего не делает.

...