所以我想要做的是让不同的群体拥有不同的权限,让他们能够看到不同的东西。我已对其进行了设置,因此表组有多列,前两个为groupid
和groupname
,其余为权限,1为启用,0为禁用。
<?php
ob_start();
session_start();
require_once 'dbconnect.php';
$res=mysql_query("SELECT * FROM users WHERE userId=".$_SESSION['user']);
$userRow=mysql_fetch_array($res);
$sql=mysql_query("SELECT * FROM groups WHERE groupid=".$userRow['usergroup']);
$groupRow=mysql_fetch_array($sql);
?>
<div id="sidebar-menu" class="main_menu_side hidden-print main_menu">
<div class="menu_section">
<h3>General</h3>
<ul class="nav side-menu">
<li><a><i class="fa fa-home"></i> Home <span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu">
<li><a href="home.php">Dashboard</a></li>
<?php if ($groupRow['Test'] == "1") { echo '<li><a href="index2.html">Dashboard2</a></li>'; } ?>
<li><a href="index3.html">Dashboard3</a></li>
</ul>
</li>
</ul>
</div>
<div class="menu_section">
<h3>Live On</h3>
<ul class="nav side-menu">
<li><a><i class="fa fa-bug"></i> Additional Pages <span class="fa fa-chevron-down"></span></a>
<ul class="nav child_menu">
<li><a href="e_commerce.html">E-commerce</a></li>
<li><a href="projects.html">Projects</a></li>
<li><a href="project_detail.html">Project Detail</a></li>
<li><a href="contacts.html">Contacts</a></li>
<li><a href="profile.html">Profile</a></li>
</ul>
</li>
</ul>
</div>
</div>
任何建议都会很棒!
谢谢,
cNTr1nity
P.S DBConnect
只是一个将其他PHP文件连接到MySQL数据库的PHP文件。
答案 0 :(得分:0)
您的测试回音位于右侧。事实上,你似乎几乎完整。我将使用单个选择查询,其中用户和组表之间的连接与用户表中的用户组的外键作为链接,会话用户作为WHERE条件,因此:
$res=mysql_query("SELECT groups.*, users.* FROM groups
INNER JOIN users ON groups.groupid = users.usergroup WHERE
users.userId =" .$_SESSION['user']);
然后您可以使用多个if条件来回显正确的附加内容 根据需要href行。
重要提示:我还建议通过更新到mysqli / pdo并保护代码免受sql注入的风险来接受@Obsidian Age评论。 docs on the later mysqli are here和helpful SO post on protecting against sql injection。因此,保护代码的良好起点是使用mysqli准备的参数语句(假设users.userId是一个整数):
$s = $mysqliConnection->prepare('SELECT groups.*, users.* FROM groups
INNER JOIN users ON groups.groupid = users.usergroup WHERE
users.userId = ?');
$s->bind_param('i',$_SESSION['user']);
$s->execute();
请参阅docs on mysqli prepared parameter statements here for more advice ,并阅读上面的SO参考资料,了解其他安全措施。