1

正如标题所说,我试图弄清楚我是否可以使对象(即按钮)成为不可见或隐藏的表格(无论属性是什么)。我以前从未考虑过这一点,但我正在尝试学习一些网页设计并且需要这样做。基本上我试图同时拥有一个网站和 CMS。因此,当我的管理员登录时,我希望只有他可以看到某些东西。当我登录到用户帐户时,只会显示正常的东西,没有编辑/插入/更新按钮。
下面我粘贴了每个页面上的登录验证。谢谢

<?php 
$saved = false;
session_start();
error_reporting(0);
if (!array_key_exists('userName', $_SESSION)) {
    header('Location: index.php');
}

--

 <form name="form" action="<?php echo $editFormAction; ?>" method="POST">
   <table width="600" border="1">
     <tr>
       <td><span id="sprytextarea1">
         <label for="content">content</label>
         <textarea name="content" id="content" cols="45" rows="5"></textarea>
         <span class="textareaRequiredMsg">A value is required.</span></span></td>
     </tr>
     <tr>
       <td>submit
         <input type="submit" name="submit" id="submit" value="Submit" /></td>
     </tr>
   </table>
   <input type="hidden" name="MM_insert" value="form" />
 </form>
4

2 回答 2

2

这很容易。由于您已经知道他们是否在每个页面上都登录了,您可以简单地在页面的 HTML 中检查他们。简单的想法如下:

<html>
    <head></head>
    <body>
       <?php if ($_SESSION['userName'] == 'whateverTheNameShouldBe') : ?>
            <span>Edit</span>
       <?php endif; ?>
    </body>
 </html>

不过,我要做的是向 $_SESSION 添加一个键,该键指示用户是否是管理员。$_SESSION['isAdmin'] 可以是真/假布尔值。然后你可以做这样的事情:

<html>
    <head></head>
    <body>
       <?php if ($_SESSION['isAdmin']) : ?>
            <span>Edit</span>
       <?php endif; ?>
    </body>
 </html>

由于您可以将 PHP 嵌入到 HTML 中,因此很容易控制您在 HTML 页面中做什么和不显示什么。您只需确保您的 $_SESSION 包含您可以使用 if/else 条件的必要标志。

请注意,不建议您直接使用 $_SESSION 全局变量。理想情况下,您会想要某种将会话存储在数据库中的会话处理程序类,但这对于您想要实现的目标可能有点矫枉过正。

于 2013-07-21T07:21:12.037 回答
1

您提供的代码不会以任何方式帮助您...如果您想要这样的 CMS,您需要有一个包含用户信息的表格,如果是的话,您可能必须拥有,而不是添加一个名为 的列user_level,一旦您拥有该列,您可以拥有不同类型的用户级别,例如管理员、超级管理员、经理、员工等,现在当用户登录时,从数据库中获取用户级别并将其保存在这样的会话中

$_SESSION['user_level'] = $fetched_data['user_level'];

在会话中保存用户级别后,您可以简单地使用 if 条件来检查用户是否属于该特定级别并相应地显示数据,例如

if($_SESSION['user_level'] == 'admin') {
   //The HTML or PHP code here will be only available for user having a user level of admin
}

因此,在您的情况下,如果您只想向管理员显示按钮,您可以像这样

<?php
if($_SESSION['user_level'] == 'admin') {
?>
<form method="post">
   <input type="submit" name="whatever" />
   <!-- Other Fields -->
</form>
<?php
}
?>

上面的代码只有在登录用户的用户级别是 时才会运行admin

你也可以这样做来避免其他用户查看一些仅供管理员使用的页面,例如控制面板,所以你可以在页面顶部写这个条件来查看用户是否是管理员而不是显示页面其他重定向用户到主页

<?php
  session_start();
  if($_SESSION['user_level'] != 'admin') {
    header('Location: home.php');
    exit;
  }
?>

注意:session_start()在开始任何 PHP 代码或 HTML 之前,始终在页面顶部使用

于 2013-07-21T07:24:20.877 回答