我有一个脚本,基本上要求用户在进入目录时登录。一旦用户验证正确,它们将被重定向到其子目录。这一切都正常,但如果他们更改URL并输入其他人的子目录,他们可以访问它。高级目录保护
这里是我的.htaccess:
AuthType Basic
AuthName "Restricted Area"
AuthUserFile (path_to)/.htpasswd
Require valid-user
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(.*)/$ index.php?a=$1
ErrorDocument 404 http://localhost/(path_to)/myfiles/
和我的index.php PHP:
<?php
//$_SERVER['PHP_AUTH_USER'] = Entered username
//$_SERVER['PHP_AUTH_PW'] = Entered password
if (!isset($_SERVER['PHP_AUTH_USER'])){
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
exit;
}
else {
if($_GET['a']==null){
header("Location: ".strtolower($_SERVER['PHP_AUTH_USER'])."/");
echo Hello;
}
else{
if(strtolower($_SERVER['PHP_AUTH_USER'])==strtolower($_GET['a'])){
echo "welcome, ".$_SERVER['PHP_AUTH_USER'];
echo "<br/>you accessed ".$_GET['a'];
}
else {
echo "woops, you're not ".$_GET['a']."!";
}
}
}
?>
目前的作品。如果你改变了URL,它会说'woops,你不是(坏的用户名)',但问题是真正的用户实际上看不到他们自己的东西。就像在Apache中一样,我想查看index.php或目录列表(如果找到文件),但我不知道如何在这里执行此操作,必须捕获所有请求并处理它们。
我该怎么做?我完全失败了:(
我想要发生的事情的示例: Person1使用他们的凭证登录到他们的帐户,他们被带到myfiles/person1,他们可以在那里看到他们的东西,但是,如果Person1更改我的文件/ person1到myfiles/person2,他们得到一个错误