0

我在 php.ini 中的用户/登录面板有一点问题。如果客人在他的面板中看到我的页面,他可以选择登录和注册。用户看到他们的成员面板如下:

(有一些 IF 函数,确保基础中没有会话 id,然后显示来宾选项)

                  <?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 的列。有用户和管理员等角色。我想让管理员看到该面板中的另一个部分。我正在尝试使用另一个 switch/case 和 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>

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

4

2 回答 2

1

首先你应该分开查看和控制,即不要将php 代码放在你的html 文件中。有很多可能性可以保持这种清洁度。例如,SMARTY框架非常流行。

其次,角色是如何写入您的 $_SESSION 的(为什么?)。你最好通过你的数据库记录集。伪:

$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标签,因为您的问题与它无关

于 2012-08-09T11:33:18.597 回答
1

您可以尝试删除';' 如果之后

<?php
  if (isset($_SESSION['role']) && ($_SESSION['role'] =='admin')) {    
?>
<!--ADMIN PANEL GOES HERE-->
<?php
    } else {
?>
<!---USER PANEL GOES HERE-->
<?php
    }
?>
于 2012-08-09T10:57:54.803 回答