阻止用户访问管理页面

时间:2010-10-22 17:11:19

标签: php mysql session

我有一个带有会话控制的php登录页面。它将普通用户路由到info.php,将admin用户路由到info_admin.php。如果我使用“普通”用户登录,则转到info.php,但是,在地址栏中,我可以转到info_admin.php并且它不会将我踢出去,让我访问。如何控制或阻止用户手动执行此操作?

有关信息,我正在使用此脚本:http://php-login-script.com/

非常感谢!

4 个答案:

答案 0 :(得分:4)

只是为了使Lotus Notes的代码更紧凑:

<?php
if (!isset($_SESSION['user_level']) || ($_SESSION['user_level'] != 2)) {
    header('Location: login.php');
    exit;
}
?>

<!-- Your page HTML here -->

答案 1 :(得分:2)

我快速扫描了登录代码,似乎是在用户首次登录时设置变量$_SESSION['user_level']

例如,要仅允许级别为2的用户,请将其放在页面顶部。它应该将非二级用户的任何人重定向回登录页面。

<?php

if (isset($_SESSION['user_level'] && $_SESSION['user_level'] == 2) {

?>


<!-- Your page HTML here -->


<?php

} else {
    header('Location: login.php');
}

?>

答案 2 :(得分:1)

高级方法是在登录时将用户的访问级别存储在会话或数据库中。在每次页面调用时,请检查该值。

答案 3 :(得分:1)

只需添加一个检查用户级别的额外功能 - 如果它处于或高于所需级别,则返回true。如果不是,则返回false并进行故障转移。然后在您要保护的页面中,使用所需的保护级别激活该功能。

例如:

function checkPerms($level) {
  if ($level >= number) {
   return true
  } else {
    failover here
  }
}

然后在你的页面中打电话

checkperms(5);

编辑:如果你真的很光滑,你可以在用户级别的原始函数调用中添加一个额外的参数,默认为最低值。然后,如果用户验证为已注册,则可以同时检查用户级别。