我只是想做到这一点,但我甚至不知道该怎么做,在这种情况下: 我有3张桌子
**
**
我通过" iduser"通过访问页面,我从表格中生成了一种菜单" admin_modules" ... 现在我想要删除用户没有访问权限的链接...... 我认为我可以通过CSS来实现,但我不知道我的菜单生成器在哪个位置"我必须放置代码才能做到...... *
include ("connector.php");
$con = conectar();
$tbl = "admin_modules";
$i=0;
$query = "SELECT * FROM $tbl";
$resultado = mysqli_query($con,$query) or die(mysqli_error());
while($dato=mysqli_fetch_array($resultado)){
echo "<td width='25%'><a href=../" .
$dato['RootDirectory'] . "/" . $dato['InitialMenu'] . "><img src=./images/icons/" .
$dato['IconName'] . "></a><p>" . $dato['ModuleName'] . "</p></td>";
$i=$i+1;
if ($i==4) {
echo"</tr>";
echo"<tr>";
$i=0;
}
}
mysqli_close($con);//cerrar conexion
额外信息:
在admin_permissions上我有两列&#34; idadmin_users [FK]&#34;和&#34; idadmin_module [FK]&#34;因此,如果用户在该表上有注册表,则他可以访问该模块。
示例:
用户John可以访问拒绝模块和发票模块... 因此,他在admin_permissions中有2个条目,其中包含唯一的用户ID和每个唯一的模块ID
答案 0 :(得分:1)
首先,您需要一个额外的查询来获取该用户可以访问的模块列表。然后,您可以在现有循环中使用该信息:
include ("connector.php");
$con = conectar();
// Get permissions
$perms = array();
$result1 = mysqli_query($con, "SELECT * FROM admin_permissions WHERE idadmin_users = $_GET['iduser']");
while ($row = mysqli_fetch_array($result1)) {
$perms[] = $row['idadmin_module'];
}
// Get modules and loop
$i = 0;
$result2 = mysqli_query($con, "SELECT * FROM admin_modules") or die(mysqli_error());
while($dato = mysqli_fetch_array($result2)){
echo '<td width="25%">';
// Only echo the <a> tags if user has permission
// I'm assuming the $dato row has an 'id'
// that matches admin_permissions.idadmin_module
if (in_array($dato['id'], $perms)
echo '<a href="../' . $dato['RootDirectory'] . '/' . $dato['InitialMenu'] . '">';
echo '<img src="./images/icons/' . $dato['IconName'] . '">';
// Only echo the <a> tags if user has permission
if (in_array($dato['id'], $perms))
echo '</a>';
echo '<p>' . $dato['ModuleName'] . '</p></td>';
$i++;
if ($i == 4) {
echo '</tr>';
echo '<tr>';
$i=0;
}
}
mysqli_close($con); // cerrar conexion
重要:强>
在此查询中使用GET参数是一个主要漏洞:
SELECT * FROM admin_permissions WHERE idadmin_users = $_GET['iduser']
使用mysqli的parameterized queries会更好,但这也可能涉及对connector.php
的更改(在撰写本文时我无法看到)。因此,使用此答案的主要概念来获取您的目标,然后更新您的查询以使其更安全。
答案 1 :(得分:0)
我认为你可能会倒退。而不是禁用人们无权访问的链接,为什么不使用查询来生成适当的链接。此外,您还需要小心地通过get变量传递用户,有人可以很容易地更改它。