0

嗨,我对 php 完全陌生(我对它一无所知),但我是一名中高级程序员,需要密码保护服务器上的文件夹或其他单个文件,以便成员访问我运行的非营利组织. 我的服务器提供商刚刚为我在他的服务器上安装了 php(他没有 Apache),但告诉我我必须完成所有的编程工作,因为他不熟悉它。

1)请为我推荐任何好的资源,以获取示例脚本和有关如何实施的指导

2) 或者请提供关于必须采取哪些措施来保护我的服务器上的文件夹或文件的分步“指南”。我希望有一个弹出窗口或其他方式让有限数量的成员输入他们选择的用户名和密码。大多数文件将是一个网页,但有些可能是可下载的 pdf。

我在这里找到的所有东西都是一小段代码,这并不能解释 php 进程的主要内容。

抱歉,如果我的问题对某些信息或信息不足感到困惑。谢谢你的意见。

请理解,我不是服务器所有者,我只是在此服务器空间上拥有我的网站并通过 FTP 访问它的个人。我认为那个人说它是基于微软的,如果这有意义吗?他为我添加了 php,因为我认为这可能会有所帮助,因为他没有 Apache,这将是我所读到的理想选择。我认为这个人不想在成员加入或离开时为添加/删除用户及其密码而烦恼。这个想法是让我拥有那种控制力和能力。

如果除了 php 还有其他方法吗?

@jerrygarciuh 的建议似乎比我能够实施的要复杂得多!;)

4

2 回答 2

1

您可以用来保护文件的一种方法是

1) 将文件存储在文档根目录之上,因此无法直接进行 http 访问

2) 验证您的用户并将他们的状态或访问级别存储在他们的浏览器会话中

3) 使用数据库存储文件名和位置

4) 链接到一个 PHP 脚本,该脚本获取文件的数据库 id 并查找位置,然后将文件传递给批准的用户,而不会透露存储的位置或确实存储的文件的名称。

这是一个小代码片段,显示了以这种方式传递的文件:

if ($bd->file) {    
    $file = "$bd->barge/$bd->file";
    if (file_exists($file)) {
        $namePartArray = preg_split('/\./', $bd->file);
        $lastIndex = count($namePartArray) - 1;
        $extension = strtolower($namePartArray[$lastIndex]);
        header('Content-type: application/$extension');
        header('Content-Disposition: attachment; filename="'.$bd->file.'"');
        header('Content-Length: ' . filesize($file));
        readfile($file);
    } else { // if file
        echo "File not found.";
        exit;
    }
} // if file
于 2012-08-17T21:27:39.587 回答
0

存在的问题是您不能在加载 pdf 之前直接使用 PHP 脚本检查会话或任何内容。

快速说明是永远不要依赖默默无闻。因此,像将文件放入数据库并随机更改它们这样的答案并不是一个好主意。

您需要阻止他们进入页面,这意味着唯一可行的方法是通过配置文件,如 web.config (如果是 IIS)或将文件放在文档 root 上方。但是,我们确实需要更多关于这方面的信息。

于 2012-08-17T21:11:45.820 回答