如何用密码保护二进制文件下载?

时间:2013-04-21 23:43:47

标签: php password-protection

我想在任意二进制文件上创建一个非常简单的php保护程序,用户输入密码并将文件下载到他们的计算机,但每次要下载时都必须输入密码。

在问题first answerEasy way to password-protect php page中,行include("secure.html");似乎要求该文件必须可显示为ascii,可由浏览器呈现。

有没有办法保护二进制文件,比如说foo.bin具有相同的简单程度(以及类似的有限安全级别)?

1 个答案:

答案 0 :(得分:2)

将文件夹设置为存储文件的位置以拒绝所有文件,然后使用readfile,您应该能够访问它。

<?php
    if (!empty($_POST)) {
        $user = $_POST['user'];
        $pass = $_POST['pass'];

        if($user == "admin"
        && $pass == "admin")
        {
            $file = 'path/to/file';

            if (file_exists($file)) {
                header('Content-Description: File Transfer');
                header('Content-Type: application/octet-stream');
                header('Content-Disposition: attachment; filename='.basename($file));
                header('Content-Transfer-Encoding: binary');
                header('Expires: 0');
                header('Cache-Control: must-revalidate');
                header('Pragma: public');
                header('Content-Length: ' . filesize($file));
                ob_clean();
                flush();
                readfile($file);
                exit;
            }
        }
    }
?>

<form method="POST" action="">
    User <input type="TEXT" name="user"></input>
    Pass <input type="TEXT" name="pass"></input>
    <input type="submit" name="submit"></input>
</form>