php - 如何在面板中为管理员提供自己的部分?

时间:2012-08-09 10:51:30

标签: php database roles

我在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>

但它不起作用。 (我有会话变量角色。)任何想法?

2 个答案:

答案 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[&currentUserID]['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标签,因为你的问题与它无关