首先,我是新手,请耐心等待。
所以我的数据库中有不同的角色,例如admin
和saf
,如果登录的人是管理员,我希望他们看到所有内容,但是如果登录的人是安全的,我只希望他们来查看Dashboard
和SAF
。
如果您需要任何其他代码,我可以提供,但是我认为这已经足够了吗?
<?php
session_start();
$ligaBD=mysqli_connect("localhost","root","","pap");
if (!isset($_SESSION['loggedin'])) {
header('Location: login.html');
exit();
}
if (!isset($_SESSION['role']) || ($_SESSION['role'] != 'admin')) {
?>
<ul class="nav navbar-nav">
<li class="active"><a href="admin.php">Dashboard</a></li>
<li><a href="biblioteca.php">Biblioteca</a></li>
<li><a href="conselhoadmin.php">Conselho Administrativo</a></li>
<li><a href="saf.php">SAF</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Bem-vindo, admin <?=$_SESSION['name']?></a></li>
<li>
<a href="https:a"><img src="./images/mail.png" alt="la" height="13" width="20" /></a>
</li>
<li><a href="./logout.php">Logout</a></li>
</ul>
<?php
}else if (!isset($_SESSION['role']) || ($_SESSION['role'] != 'saf')) {
?>
<ul class="nav navbar-nav">
<li class="active"><a href="admin.php">Dashboard</a></li>
<li><a href="saf.php">SAF</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Bem-vindo, saf @login</a></li>
<li>
<a href="https:a/"><img src="./images/mail.png" alt="la" height="13" width="20" /></a>
</li>
<li><a href="./login.html">Logout</a></li>
</ul>
<?php
mysqli_close($ligaBD);
?>
此代码对我造成的影响是,当我以SAF用户身份登录时,仍然可以看到管理功能。
如果您能帮助我,我将不胜感激。谢谢
答案 0 :(得分:2)
您正在弄乱if
条件。
第一个if
条件应为:
if (isset($_SESSION['role']) && ($_SESSION['role'] == 'admin')) {
// Show admin role links.
第二个if
条件应该是:
if (isset($_SESSION['role']) && ($_SESSION['role'] != 'admin')) {
// Show admin Non-admin/saf role links.
答案 1 :(得分:1)
您需要整理if
语句。他们中的许多人在检查两个条件时才真正需要检查一个。
如果选择太多,也可以用switch
语句代替if
语句。
下面的简化代码将向管理员标记的$_SESSION
变量显示管理员详细信息,并向SAF标记变量显示SAF详细信息。
最好使用严格的比较工具===
。检查正匹配项不是负匹配项(请查找===
而不是!==
)。
请注意,参数列表与原始代码的顺序不同。
/***
* I would suggest using the below line to avoid error report NOTICES.
* Setting an unset value to false also fits the later test of empty()
***/
if(!isset($_SESSION['role'])){
$_SESSION['role'] = false;
}
if ($_SESSION['role'] === 'admin') {
?>
Admin Dashboard HTML
<?php
}
elseif ($_SESSION['role'] === 'saf'){
?>
SAF Dashboard HTML
<?php
}
elseif (!empty($_SESSION['role']) ) {
?>
Some other authentication level dashboard (optional).
<?php
}
mysqli_close($ligaBD);
?>
答案 2 :(得分:0)
如果要向所有用户显示仪表板和安全性,则可以使用以下条件:
if (isset($_SESSION['role']) && ($_SESSION['role'] != 'admin')) {
// Show Dashboard and saf and other links to all users.
<ul class="nav navbar-nav">
<li class="active"><a href="admin.php">Dashboard</a></li>
<li><a href="saf.php">SAF</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Bem-vindo, saf @login</a></li>
<li>
<a href="https:a/"><img src="./images/mail.png" alt="la" height="13" width="20" /></a>
</li>
<li><a href="./login.html">Logout</a></li>
</ul>
}else{
// Show All links admin users.
<ul class="nav navbar-nav">
<li class="active"><a href="admin.php">Dashboard</a></li>
<li><a href="biblioteca.php">Biblioteca</a></li>
<li><a href="conselhoadmin.php">Conselho Administrativo</a></li>
<li><a href="saf.php">SAF</a></li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="#">Bem-vindo, admin <?=$_SESSION['name']?></a></li>
<li>
<a href="https:a"><img src="./images/mail.png" alt="la" height="13" width="20" /></a>
</li>
<li><a href="./logout.php">Logout</a></li>
</ul>
}