我有一个带有会话控制的php登录页面。它将普通用户路由到info.php,将admin用户路由到info_admin.php。如果我使用“普通”用户登录,则转到info.php,但是,在地址栏中,我可以转到info_admin.php并且它不会将我踢出去,让我访问。如何控制或阻止用户手动执行此操作?
有关信息,我正在使用此脚本:http://php-login-script.com/
非常感谢!
答案 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);
编辑:如果你真的很光滑,你可以在用户级别的原始函数调用中添加一个额外的参数,默认为最低值。然后,如果用户验证为已注册,则可以同时检查用户级别。