如何只允许从一个URL下载文件?

时间:2016-10-06 13:58:36

标签: php .htaccess

我正在寻找一个非常简单的PDF文件下载保护,但我不知道从哪里开始。

这是一个PDF文件,我在受密码保护的WordPress页面上提供下载链接。当有人注册我的列表时,他们会收到一封包含密码的电子邮件。在受密码保护的页面上是指向PDF文件的链接

我只希望此页面(特定网址)能够访问该文件。因此,除非您拥有该页面的密码,否则链接共享是不可能的。

这可以通过htaccess文件实现吗?像这样:

<Files *.pdf> 
    order Deny,Allow 
    Deny from all 
    Allow from *SPECIFIC_URL* 
</Files> 

请帮忙

...谢谢

3 个答案:

答案 0 :(得分:0)

我会创建用于检查auth的php脚本,如果auth正常,则返回带有正确标题的pdf。并使用链接到页面上的脚本而不是直接链接到pdf。 Pdf文件可以放在“web”文件夹之外的某个位置。

答案 1 :(得分:0)

好吧,对于每次注册,您都可以分配一个&#39; download_state&#39;数据库中的用户使用默认值&#39; working&#39; ,以及当用户访问受保护的页面时 页面会检查是否&#39; download_state&#39;还在。 如果是php将提供下载链接并更新&#39; download_state&#39;到期&#39;

    If (download_state == "working")
{
ServeDownload
Update download_state to 'expired'
}else 
Die("Your link is expired please get a new one")

对于服务下载,您可以使用以下示例

    $file_url = path/document.pdf;
    header('Content-Type: application/pdf');
header("Content-Disposition:attachment;filename='document.pdf'");
    header("Content-Transfer-Encoding: Binary");
    header("Content-disposition: attachment; filename=".$pdfname);
    readfile($file_url);

通过这种方式,pdf文件位置将被隐藏。

答案 2 :(得分:0)

你可以实现一些安全性,而不是你想要的,但作为临时占位符,非常容易设置,.htaccess密码保护。它会提示用户输入密码,你可以动态生成htpassword,并提供给用户。当然它不是无障碍的方法,但它总比没有好。并且您可以拥有自己的“管理员”密码,可以在没有人访问文件时写入。但正如我所提到的,它是暂时的,但应该很容易设置。

(来自http://www.htaccesstools.com/articles/create-password-for-htpasswd-file-using-php/的代码)

<?php
// Password to be encrypted for a .htpasswd file
$clearTextPassword = 'some password';

// Encrypt password
$password = crypt($clearTextPassword, base64_encode($clearTextPassword));

// Print encrypted password
echo $password;
?>