Php 保护下载

Php 保护下载,php,download,x-sendfile,Php,Download,X Sendfile,我只是在下面测试这个下载脚本。下载工作正常,但下载的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: $pa

我只是在下面测试这个下载脚本。下载工作正常,但下载的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>

拒绝许可
请先登录


您很可能在文件中添加了某些内容。尽量使用和清洁

<?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>";
}

您是否已将Web服务器(尤其是Apache)配置为加载?如果没有安装该模块,您的脚本基本上不会执行任何操作。

在文本编辑器中打开该文件。你看到了什么?你没有发送任何数据,是吗?你是否按照该代码的建议安装了
modxsendfile
?@icktoofay,不,对不起,我想这两台服务器都没有安装。我只是想,如果没有安装,代码会停止运行。我没有收到任何错误-下载工作正常。是否有替代使用modxsendfile的方法。不需要安装模块就可以做到这一点吗?谢谢,在我写的时候把它和标题一起保存,它解决了IE下载的一些问题。