1

我正在尝试为我的网站创建一个仅限管理员使用的小导航面板,该面板仅在管理员登录时才可见。我的所有会话逻辑工作正常,我只是不确定一件事。

将导航面板 HTML 代码始终放在源代码中是否更标准的做法,但只是根据用户是否以管理员身份登录使用 PHP 更改显示属性?所以像

<head>
<?php 
   if($_SESSION['loggedin']) { 
     echo "<style>#adminPanel { display:block; }</style>";
   }
?>
</head>

在拥有原始 CSS 的同时display:none;

或者

如果用户登录,让 PHP 回显完整的 adminPanel HTML?像:

<?php
  if($_SESSION['loggedin'])
  {
     ?>

        //HTML for adminPanel goes here

     <?php
  }
?>

我基本上想知道什么方法是标准的,或者它们是否同样可以接受?谢谢

我不确定这个问题是否被认为是主观的,如果是的话,很抱歉。

4

3 回答 3

4

用户可以在第一种方法中即时编辑 CSS 并公开您的管理面板。因此,第二个更可取,因为您不会输出任何您不希望用户看到的内容。

于 2012-07-30T16:19:35.477 回答
4

如果某些东西应该对未经授权的人不可见,那么首先不要将其发送给客户。这可能是默默无闻的安全,但为什么要吹嘘有一个管理面板并准确说出它在哪里呢?

于 2012-07-30T16:20:28.767 回答
1

我可能正在睡觉,但两者不是在做完全相同的事情,但第一个示例只是简单地回显 HTML 标记?

要回答您的问题:

我通常包装所有应该具有某种形式的访问权限的元素,就像您在示例 #2 中所做的那样。使它更容易阅读,并且当您不可避免地错过其中一个引号时可以避免头疼。

您还可以制作一个简单的“如果登录则包含”,例如:

<?php
    if($_SESSION['loggedin']{

    include('/path/to/adminpanel.php');
}
?>

Wich 是我的一般方法,因为它更加简化了更新和更改。这也意味着您想要包含的特定于管理面板的 JS 对标准用户是不可见的,因为这将在“adminpanel.php”中请求

于 2012-07-30T16:29:33.067 回答