我的数据库中有两个表: 1.)成员(id,用户名,电子邮件,密码,盐,等级)< -tier是用户的安全许可级别。 2.)opwire(类别,内容,日期,用户ID,seclevel)< -opwire存储用户提交的数据,userid是一个引用刚刚向opwire提交数据的用户的数字。 Seclevel是用户查看特定提交数据所需的安全许可级别的高度。
然后我有一个名为get_opwire.php的php文件(如下所示)从opwire中提取信息并将其列在表格中。我想要完成的是通过引用tier vs seclevel来限制/允许信息。
例如,假设opwire看起来像这样:
-Category / contents / date / userid / seclevel
- 敌人位置/法院后面的坦克/今天/ 1/5
-Item Location / Bazooka in trashcan / today / 1/2
如果Bob已登录且他有3级访问权限,则会看到
- 敌人位置/ 拒绝访问 /今天/管理员
-Item Location / Bazooka in trashcan / today / Admin
(Admin只是提交数据的用户,即userid。)因此,实际上只有内容区域echo需要反映这一变化。我想过使用嵌套的if / while和> =原则(如果Bob的层数是> = seclevel,回显内容,否则回复访问被拒绝),但老实说修改我这里做的这个语法明智的是有点在我头上。
有人能帮忙吗?这是get_opwire.php:
<?php
include_once 'functions.php';
include_once 'db_connect.php';
sec_session_start();
if(login_check($mysqli) == true) {
$con=mysqli_connect("localhost","mylogin","mypassword","mysqldatabase");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
function getColor($strOption)
{
switch ($strOption)
{
case "Enemy Location":
return "#cbae80";
case "Item Location":
return "#e59350";
case "Another Category etc":
return "#b7aaa4";
}
}
$result = mysqli_query($con,"SELECT opwire.*,members.username FROM opwire
LEFT JOIN members on opwire.userid=members.id order by date DESC");
echo "<table border='1'>
<tr>
<th>Category</th>
<th>Contents</th>
<th>Date/Time</th>
<th>Operative</th>
</tr>";
while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td><font size=1 color='".getColor($row['category'])."'> " . $row['category'] . "</font></td>";
echo "<td><font size=1 color=#e4d6b5>" . $row['contents'] . "</font></td>";
echo "<td><font size=1 color=silver>" . $row['date'] . "</font></td>";
echo "<td><font size=1 color=gold>" . $row['username'] . "</font></td>";
echo "</tr>";
}
echo "</table>";
mysqli_close($con);
} else {
echo 'Access to this area requires security clearance. <br/>';
}
?>