3

我试图了解如何为我正在尝试做的事情设置正确的逻辑。

我希望有一个网站,可以根据用户类型/类别访问特定的 URL。因此,如果用户 A 订阅了 URL 1、2、3,他应该无法访问用户 B 订阅的 4、5、6。

我可以很容易地写一些东西来检查用户是否在填充一系列链接之前登录,但我不希望这些链接与其他用户共享。

我在想我可能会使用 mysql 查询来选择用户匹配某个组或类型的位置,并将此查询放在每个页面中,因此在加载内容之前它会检查数据库以确保正确的用户可以访问它.

我想知道的是1.这是正确的方法吗?和 2. 我将如何构建我的数据库?我是否应该拥有它,以便每个页面(或特定类型的内容)都是它自己的表格,并且用户在注册时输入到该表格中?还是有另一种从逻辑上和性能角度来看可能更好的结构方式?

4

2 回答 2

2

您在用户组的正确道路上。并且每次用户加载页面时进行选择会给您带来糟糕的性能,但这是我曾经使用过的非常相似的解决方案。

首先创建一个包含用户组的表(以防您以后需要添加组),然后将索引添加到您的用户表以引用每个用户的组。

然后在您的登录查询中选择用户组的 ID 以及用户并传递,并将其存储到$_SESSIONvar 中,就像使用其他两个字段一样,我们称之为$_SESSION['groupid']

然后在要显示正确链接的页面上混合 php 和 html。这部分将取决于您拥有多少个组,如果它们很少(例如管理员、版主、用户),应该这样做:

<yourhtml pre-links>
<? if($_SESSION['groupid']==1)
{
echo "link 1" //formated html links goes here, maybe pre-stored links
}
elseif ($_SESSION['groupid']==2)
{
echo "link 2"
echo "link 3"
}
elseif ($_SESSION['groupid']==3)
{
echo "link 3"
echo "link 1"
}
?>
<yourhtml post-links>

希望这对您有所帮助,不知道这是否是您真正想要的,但是这样您就可以显示它们而无需更改页面或任何东西

于 2013-09-06T05:15:36.667 回答
0

我这方面的知识不够。如果那时我是你,

我将创建带有链接的表格

链接

 link_id   link
   1       abc.php
   2       cde.php
   3       efg.php

user_details

 user_id username   password 
    1     login1   login_pass
    2     login2   login_pass2

以及将用户链接定义为的表

用户链接

  id  user_id  link_id 
   1     1       1
   2     1       2 
   3     2       3 

从这些表中,使用连接我将获得 login1 用户链接 abc.php 和 cde.php 的用户链接

同样的方式,您可以映射所有其他链接。

为了检查用户权限,您可以编写一个函数来检查所选路径是否已与登录用户映射(您可以存储在会话中的用户 ID)。

于 2013-09-06T05:14:02.413 回答