我正在努力了解如何为我正在尝试做的事情设置正确的逻辑。
我希望有一个网站可以根据用户类型/类别访问特定的网址。因此,如果用户A订阅了URL 1,2,3,他应该无法访问用户B订阅的4,5,6。
我可以轻松地编写一些内容,以便在填充一系列链接之前检查用户是否已登录,但我不希望链接与其他用户共享。
我在想我可能会使用mysql查询来选择用户匹配特定组或类型的位置,并将此查询放在每个页面中,因此在加载内容之前,它会检查数据库以确保正确的用户获得访问它。
我想知道的是1.这是正确的方法吗? 2.我将如何构建我的数据库?我应该拥有它以便每个页面(或特定类型的内容)是它自己的表格,并且用户在注册时输入到该表格中吗?或者是否有另一种方法可以从逻辑上和从性能角度更好地构建它?
答案 0 :(得分:2)
您正在使用用户组的正确路径。并且每次用户加载页面时进行选择都会给你带来糟糕的性能,但这是一个我用过的非常相似的解决方案。
首先创建一个包含用户组的表(如果以后需要添加组),然后在users表中添加一个索引以引用每个用户的组。
然后在您的登录查询中选择用户组的ID以及用户并传递,并将其存储到$_SESSION
var,就像使用其他两个字段一样,我们称之为$_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>
希望这会让你感到困惑,不知道那是不是你真正想要的东西,但这样你就可以在不改变页面或任何东西的情况下展示它们
答案 1 :(得分: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
和一个将用户链接定义为
的表<强> user_links 强>
id user_id link_id
1 1 1
2 1 2
3 2 3
从这些表中,使用联接,我将获得login1用户链接abc.php和cde.php的用户链接
您可以映射所有其他链接。
为了检查用户权限,您可以编写一个函数来检查所选路径是否已经与已登录用户(您可以在会话中存储的用户ID)进行映射。