PHP如何将文件夹和网站内容限制为不同的用户?

时间:2012-04-03 13:48:32

标签: php

我一直在谷歌上搜索几天,并且遇到了不同的方法来保护文件夹(htaccess,使用带有密码的PHP页面),但这些并没有解决我的问题。

问题: 我需要有一个网站,不同的客户只能访问他们的内容。客户A需要能够访问其所有Flash内容和网站。 Client-B和Client-C需要做同样的事情,但是没有一个可以访问彼此的内容(甚至通过直接链接到它)。用户名/密码系统不起作用,因为每个客户端有400-1000个用户,我自己或客户端都没有时间管理所有这些用户。

我查看了htaccess和htpasswd,但我不想使用任何用户名/密码组合。理想情况下,我想要一个“秘密词”或“密码”我可以从iPad应用程序或Air程序传递到服务器以获取我需要的内容。任何人都有一些关于处理这个问题的最佳方法的想法吗?

编辑:为了简化事情...我希望HTML网站和Flash swf在我的网络根目录之上,并能够将它们显示给用户。我怎样才能做到这一点?我有使用相对链接的HTML网站,因此使用php的readfile()会导致这些网站中断,因为这些链接不正确。

3 个答案:

答案 0 :(得分:1)

您使用的是什么RDBMS?

使用mod_authn_dbd和基本身份验证,您就可以这样做。

像这样,

AuthType Basic
AuthName "My Server"
AuthBasicProvider dbd

# core authorization configuration
Require valid-user

# mod_authn_dbd SQL query to authenticate a user
AuthDBDUserPWQuery "SELECT password FROM authn WHERE user = %s"

答案 1 :(得分:0)

如果您可以控制发送请求的软件,您可以为每个标识用户的请求添加一个自己的X-header。

使用apache_request_headers(),您可以从请求中获取自己的请求标头: http://www.php.net/manual/en/function.apache-request-headers.php

==============

首次评论后编辑:

一些代码例如:

globals.php

$headers = apache_request_headers();
$key = $headers["X-Authorization-Key"];

$authorized = checkAuthorization($key);
if(!$authorized) {
    header('HTTP/1.1 403 Forbidden');
    echo "Access denied!";
    exit;
}

//... db connection or something else to get user specific definitions, paths, ...
//e.g.:
$user = $users[$key];
define("CONTENT_PATH", "/var/www/mypage/data/".$user);

function checkAuthorization($key) {
    //... db connection or something else where the authorization-information are stored in
    //check whether the $key is in the auth-info and return true / false for the result
    return true; //or false
}

在每个剧本中:

<?php
require_once("globals.php");
//... work with the user specific definitions, paths
include(CONTENT_PATH."/...");
//...

答案 2 :(得分:0)

您所做的是当用户创建他们的登录帐户时,他们可以选择他们正在使用的组。然后,当显示页面信息时,它会显示正常页面,但其中包含权限名称。您必须构建3个单独的内容页面,但他们只能看到所选组的内容。

homegroup1.php homegroup2.php homegroup3.php

如果用户在第一组中,则直接将是主页“group”.php用于显示。它会要求他们去的网站上的小组。