PHP - 保护通过直接链接访问的 PDF 文件

标签 php pdf

我的服务器中有一个 PDF 文件,并且有一个 PHP 页面可以在一些凭证验证(例如密码验证)后强制下载 PDF 文件,但是如果用户能够知道他们设法获取的 PDF 文件的直接链接无需通过凭证验证即可查看/下载它。

是否有任何方法可以保护通过直接链接访问的 PDF 文件,如 http://domain.com/mypdf.pdf

最佳答案

使用此代码...

正如您所提到的,最好的方法是使用 htaccess 保护该文件夹。因此,您将所有 PDF 放在 pdf/ 文件夹中,并在您放置 .htaccess 文件的同一个 pdf 文件夹中:

RewriteEngine on
RewriteRule .* your-php-script.php

现在此文件夹中没有任何文件可以通过 url 访问。对该文件夹中文件的每个请求都将返回 your-php-script.php 脚本返回的内容。在 your-php-script.php 中,您执行如下操作:-

//Check if user has right to access the file. If no, show access denied and exit the script.
$path = $_SERVER['REQUEST_URI'];
$paths = explode('/', path);
$lastIndex = count($paths) - 1;
$fileName = $paths[$lastIndex]; // Maybe add some code to detect subfolder if you have them
// Check if that file exists, if no show some error message
// Output headers here
readfile($filename);

关于PHP - 保护通过直接链接访问的 PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30935833/

相关文章:

php - 使用编码为 UTF-8 的 PDFTk 填充的 pdf 中缺少字符

ios - 为什么本地 PDF 无法仅在一台设备上绘制 UIDocumentInteractionController?

php - 如何四舍五入到最接近的千位?

php - 需要根据主 MySql 数据库中的数据是否已经存在来填充菜单的可用选项

pdf - 如何轻松裁剪 PDF 页面?

PHP 到 PDF 分页

c# - 如何使用所有者密码解密 PDF 文档?

php - 使用 ajax 和 php 时的用户身份验证和重定向

php - Yii::configure 在模块 init() 中不起作用

php - 为什么我不能在docker容器中运行phpinfo()?