我在php中的用户/登录面板有点问题。如果客人在他的面板中看到我的页面,他可以选择登录和注册。用户可以看到他们的成员小组,如下所示:
(有一些IF函数,确保在base中没有会话ID,然后显示guest的选项)
<?php
else:
?>
<div>
<h1>Members panel</h1>
<p>You can put member-only data here</p>
<p><a href="registered.php">View a member page</a></p>
<p><a href="changepass.php">Edit your password</a></p>
<p>-----</p>
<a href="?logoff">Log off</a>
现在:在我的数据库中,用户我有一个名为ROLE的列。有用户和管理员等角色。我想让管理员看到该面板中的另一部分。我正在尝试使用另一个开关/案例和IF指令,例如:
<?php
if (isset($_SESSION['role']) && ($_SESSION['role'] =='admin'));
{
}
?>
(there is member panel)
<div class="left right">
<h1>Administrator panel</h1>
<a href="admin.php">View an admin page</a>
但它不起作用。 (我有会话变量角色。)任何想法?
答案 0 :(得分:1)
您可以尝试删除';'之后如果
<?php
if (isset($_SESSION['role']) && ($_SESSION['role'] =='admin')) {
?>
<!--ADMIN PANEL GOES HERE-->
<?php
} else {
?>
<!---USER PANEL GOES HERE-->
<?php
}
?>
答案 1 :(得分:1)
首先你应该分开查看和控制,即不要将PHP代码放在你的html文件中。有很多可能性来保持这个更清洁。例如,SMARTY框架非常受欢迎。
第二,如何将角色写入$ _SESSION(以及为什么?)。你应该更好地传递你的db-recordset。伪:
$rs = db->query(SELECT * FROM users ORDER BY userID)
if ($rs[¤tUserID]['role'] == 'admin') {
...
}
第三:如果你搞乱了php和html,你至少应该在一个单独的区域中生成你的php(显然在任何输出之前)并输出你的HTML,例如用heredoc语法:
<?php
// do any PHP stuff here
$panel = 'user logged in';
if (admin) {
$panel .= "i'm an admin";
}
echo <<<OUT
<!DOCTYPE html>
<html>
... // put all HTML in here and use variables
<body>
<div>$panel</div>
</body>
</html>
OUT;
?>
PS:请删除css标签,因为你的问题与它无关