PHP限制访问网页

时间:2014-10-13 16:07:31

标签: php .htaccess restriction

我的网络服务器中有几个文件夹。 每个文件夹都包含php / html文件。总共有大约40个文件。

使用php我可以确定当前登录用户的身份。

是否可以允许用户根据他们登录的用户来访问特定页面?

我想知道.htaccess是否允许这样做?或者,如果有更好的方法?

我真的不想开始创建用户/密码验证脚本。

由于

3 个答案:

答案 0 :(得分:4)

使用会话,您可以通过为SESSION变量分配用户级别来创建用户级别并限制对各个区域的访问。据推测,因为引用Using php I can determine the identity of the user who is currently logged in.,您可以设置会话变量。我相信这被称为基于角色的访问控制 - 它是最简单的形式

if ($_SESSION['user_level'] == "Administrator") {
# do something
}

This article may help further

答案 1 :(得分:1)

您可以在.htaccess中执行以下操作:

RewriteEngine On
RewriteBase /
RewriteRule ^(.+?\.php)$ index.php?p=$1 [L,QSA,NC]

这会将尝试查看PHP页面的所有用户重定向到index.php?p=someurl.php

然后在index.php中,您可以确定用户是否有权查看文件,以及他们是否提供服务,如果没有拒绝。

if ( authorized() ) {
  // show file
} else {
  die("Not Authorized to Access this File.");
}

答案 2 :(得分:0)

您无法直接从 .htaccess 规则访问 SESSION ,但如果您不愿意编码,可以尝试解决方法。

在授权代码部分中,在创建会话后的最后几行中,添加touch()以创建当前用户会话ID的文件名:

touch("./folder/logged/PHPSESSID_".session_id());

然后在 .htaccess 文件中尝试验证之前是否创建了当前的PHPSESSID相关文件:

RewriteCond %{HTTP_COOKIE} PHPSESSID=(\w+)
RewriteCond %{DOCUMENT_ROOT}/folder/logged/PHPSESSID_%1 -f
RewriteRule ^(.*)$ $1
RewriteRule .* /users/login [L]

*另请注意,您应该创建一个简单的脚本来检查创建的文件是否有效,如果没有,则删除它们。

*这只是一个想法!