0

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

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

1 回答 1

0

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

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

例如,如果登录 = 成功:

$_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 - 同样,在该表中连续拥有姓名/详细信息的任何人都可以管理其他用户(或其他用户)

要检查这一点,您只需简单地查询,如果没有结果,他们就不能。

同样,最好的方法完全取决于您的站点、场景、您必须编辑多少页面、是否动态创建等等。有各种各样的方法,但希望我已经给了您思考的余地,并帮助:)

于 2013-08-10T10:50:42.590 回答