php中的密码保护目录

时间:2013-08-10 03:11:16

标签: php .htaccess

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

编辑: 我已经解决了使用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>

1 个答案:

答案 0 :(得分:0)

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

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

例如,如果login = success:

$_SESSION['loggedin']['userlevel'] = $FromDatabase['userlevel'];

然后在每个页面中包含的包含文件中(header.php或config.php) 我有(我的config.php在任何标题/浏览器输出发送之前等)

  if (!isset($_SESSION))
    {
      session_start();
    }

    $strUserLevel = false;

    if (isset($_SESSION['loggedin']['userlevel']))
      {
        $strUserLevel = $_SESSION['loggedin']['userlevel'];
      }

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

    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
    }

以上只是基本的例子。我的代码有点复杂,因为我总是在include中使用config.php并设置全局变量以在那里使用站点范围,并且具有基本的登录检查功能(检查它们当前的IP是否与我在登录时检查并存储在DB中的IP匹配和其他东西等。)

权限控制的另一种方法是使用mysql表。因此,如果你有TABLE tblEditPageAB,那个名字在该表中的任何人都可以编辑该页面。 虽然这更多地用于管理控制,即你有tblAdministrateOtherUsers - 再次在该表中连续拥有其姓名/详细信息的任何人都可以管理其他用户(或其他任何用户)

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

同样,最好的方法都取决于您的网站,场景,必须编辑的页面数量,是否即时创建,等等。 有各种各样的方法,但希望我给你一些思考的食物,并帮助:)