我的网络服务器中有几个文件夹。 每个文件夹都包含php / html文件。总共有大约40个文件。
使用php我可以确定当前登录用户的身份。
是否可以允许用户根据他们登录的用户来访问特定页面?
我想知道.htaccess
是否允许这样做?或者,如果有更好的方法?
我真的不想开始创建用户/密码验证脚本。
由于
答案 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
}
答案 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]
*另请注意,您应该创建一个简单的脚本来检查创建的文件是否有效,如果没有,则删除它们。
*这只是一个想法!