php - 如何只允许登录用户访问linux服务器上文件夹中的文件

标签 php linux wordpress

我创建了.htaccess 文件 并将这段代码放入其中:

Order Deny,Allow
Deny from all

这是我的 php 代码,它在我装有 WAMP SERVER 的 Windows 机器上运行良好:

    $path = $data['path']; // complete path to file

if (is_user_logged_in()) {
    //return $path;
    if (file_exists($path)) {
        header('Cache-Control: public');
        header('Content-Description: File Transfer');
        header('Content-Type: application/pdf');
        header('Content-Transfer-Encoding: binary');
        readfile($path);
    }
} else {
    return 'Welcome, visitor!';
} 

但是当我在服务器上运行它时,它根本不起作用。有一个锁定的文件夹,我在其中放置了 .htaccess 文件。在锁定的文件夹下有许多子文件夹,我想限制只有登录用户的访问权限。

最佳答案

您的 .htaccess 文件是一种(缓慢的)方式来阻止任何人请求您的文件。它不关心用户是否登录。

我会采取的方法是

a) 将您想要授予登录访问权限的文件移出根目录。这样,没有人可以直接请求路径 - 他们必须使用您的 php 文件才能获得访问权限。

b) 在您的 php 文件中,测试您的用户是否已登录。如果没有,请向他们显示登录屏幕或适当的错误消息。

c) 当他们登录时,阅读您要向他们展示的文件并回应内容,(或阅读数据并构建回复页面)。

关于php - 如何只允许登录用户访问linux服务器上文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13680464/

相关文章:

php - 如何将此 javascript 函数转换为 PHP?

php - token 身份验证 - token 的存储位置

php - 我的 URL 中需要连字符

javascript - 如何从单独的日志文件检索数据

css - css 中的 Wordpress/OptionTree 引用

linux - Perl 拆分和合并函数存在一些问题

linux - 无法使用 Eclipse 在 Windows 上编译 Linux

linux - 为什么在停止 Apache 服务后,我的 IP 地址仍然可以看到 Apache 默认页面?

javascript - 如何减少第一个字节的时间

html - 如何在整个站点范围内右对齐特定表格列?