php中的密码保护目录

php中的密码保护目录,php,.htaccess,Php,.htaccess,我正在创建一个web目录,我已经创建了一个系统,管理员可以将内容添加到站点。问题是内容是静态的,并且被添加到目录中,因为我们想像mysite.com/test/content/ab.html那样显示它,所以如何使用php允许通过php访问该url,用户详细信息在mysql数据库中。我的意思是,如果用户已登录并拥有权限,则他/她可以查看mysite.com/test/content/ab.html或内容中的任何文件,但如果他/她已注销,则应重定向 编辑: 我已经解决了一半的问题,现在使用htacc

我正在创建一个web目录,我已经创建了一个系统,管理员可以将内容添加到站点。问题是内容是静态的,并且被添加到目录中,因为我们想像
mysite.com/test/content/ab.html
那样显示它,所以如何使用php允许通过php访问该url,用户详细信息在mysql数据库中。我的意思是,如果用户已登录并拥有权限,则他/她可以查看
mysite.com/test/content/ab.html
内容中的任何文件,但如果他/她已注销,则应重定向

编辑: 我已经解决了一半的问题,现在使用htaccess它检查用户是否登录,但如何重定向用户是否登录?这是我使用的htaccess

# For security reasons, Option followsymlinks cannot be overridden.
#Options +FollowSymLinks +ExecCGI
Options +SymLinksIfOwnerMatch +ExecCGI
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_URI}  !(\.php)$
    RewriteRule (.*)  /index.php [QSA]
</IfModule>
#出于安全原因,无法覆盖选项followsymlinks。
#选项+FollowSymLinks+ExecCGI
选项+符号链接所有者匹配+执行CGI
重新启动发动机
重写cond%{REQUEST_URI}!(\.php)$
重写规则(.*)/index.php[QSA]

如果不知道用户是如何登录的,就很难提供帮助(您必须这样做,至少您知道他们已登录以及他们是哪个用户) 我将假设一个基本的登录系统

我这样做的方式是basic login.php页面,如果登录成功,请设置一些基本会话(没有密码、用户名或敏感信息),并设置它们的用户级别(以便您可以管理它们可以访问的内容)

例如,如果登录=成功:

$_SESSION['loggedin']['userlevel'] = $FromDatabase['userlevel'];
然后在每个页面(header.php或config.php)中包含的包含文件中 我有(我的config.php在发送任何标题/浏览器之前)

然后我可以在整个网站上使用它来控制他们的访问:

    if($strUserLevel == false)
      {
        header("location: login.php");
        die();
      }
    //or wherever you want to redirect them
    //or just say you need to be logged in to view this, link to login page (etc)


  if ($strUserlevel < 3) // or whatever level they need for this page
    {
      echo "You cannot edit this page";
      exit();
    }
  else
    {
      //a form or whatever
    }
if($strUserLevel==false)
{
标题(“location:login.php”);
模具();
}
//或者在任何你想重定向它们的地方
//或者只是说你需要登录才能查看这个,链接到登录页面(等等)
if($strUserlevel<3)//或此页面所需的任何级别
{
echo“您不能编辑此页面”;
退出();
}
其他的
{
//一种形式或者别的什么
}
以上只是一些基本的例子。我的代码有点复杂,因为我总是在includes中使用config.php,并设置全局变量以在站点范围内使用,并且有一个基本的登录检查功能(检查它们的当前IP是否与我在登录时检查并存储在DB和其他东西中的IP匹配)

权限控制的另一种方法是使用mysql表。因此,如果您有表tblEditPageAB,则该表中某一行中的任何人都可以编辑该页。 虽然这更多的是用于管理控制,即您有tblAdministrateOtherUsers-同样,任何在该表中有其姓名/详细信息的人都可以管理其他用户(或其他任何用户)

要检查这一点,您只需查询,如果没有结果,则无法查询

同样,最好的方法完全取决于你的网站、场景、你需要编辑多少页面、它们是否是动态创建的等等。
有各种各样的方法,但希望我已经给了您思考的食物,并为您提供了帮助:)

我想这就是您正在寻找的东西,您是否有任何您尝试过的代码示例?好的,没有任何代码,这里是“一个”可能的场景。1) 用2个字段组成一个登录表单;一个用于用户名,一个用于密码。如果它们与数据库中的内容匹配,则表示它们在数据库中。2) 使用会话(包含在所有页面中)3)使用令牌。//有很多代码示例,你需要做的就是谷歌“用户名密码数据库会话”,也许还需要添加“令牌”。关于“如何”的一些信息:我已经创建了,我想要的是,如果用户注销或没有查看权限,我如何禁止用户查看目录中的内容。我已经对权限系统进行了编码。我的代码与您的代码类似。我想要的是,如果用户未登录,如何禁用用户对上载文件夹的直接访问请记住,这是
文件夹
,并且用户登录在数据库中。在“mysite.com/test/content/ab.html”中,包括在未登录时重定向他们的代码。对于文件夹视图阻止,您可以在要阻止的文件夹的htaccess文件中使用
选项-索引
,除非您希望登录的用户能够查看文件夹列表,在这种情况下,您最好只使用ht访问锁定所有文件夹列表,然后在php中控制文件/文件夹的查看。如果用户登录显示网页上的文件夹(不是默认的apache文件夹视图),是的,我已成功实现了系统,但这里有两点1。我说的文件夹可以从管理面板上传。2.如何使用
file\u get\u contents
向用户显示请求的文件?
    if($strUserLevel == false)
      {
        header("location: login.php");
        die();
      }
    //or wherever you want to redirect them
    //or just say you need to be logged in to view this, link to login page (etc)


  if ($strUserlevel < 3) // or whatever level they need for this page
    {
      echo "You cannot edit this page";
      exit();
    }
  else
    {
      //a form or whatever
    }