根据用户登录隐藏或显示对象

时间:2013-07-21 07:17:25

标签: php html

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

<?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>

2 个答案:

答案 0 :(得分:1)

这很容易。由于您已经知道他们是否已登录每个页面,因此您只需在页面的HTML中检查它们即可。简单的想法如下:

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

我会做的是为$ _SESSION添加一个键,指示用户是否是管理员。 $ _SESSION ['isAdmin'],可以是true / false布尔值。然后你可以做这样的事情:

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

由于您可以将PHP嵌入到HTML中,因此非常容易控制您在HTML页面中执行和不显示的内容。所有你必须确保你的$ _SESSION包含必要的标志,如果/ else条件,你可以使用。

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

答案 1 :(得分:1)

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

$_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时,才会运行上述代码。

此外,您可以执行此操作以避免其他用户查看仅适用于管理员的页面,例如控制面板,因此您可以在页面顶部写下此条件,以查看用户是否为管理员而非显示page else将用户重定向到主页

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

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