我有一个带有会话控制的php登录页面。它将普通用户路由到info.php,管理员用户路由到info_admin.php。如果我使用“普通”用户登录,它会转到info.php,但是,在地址栏中,我可以访问info_admin.php,它不会将我踢出去,并允许我访问。我该如何控制或防止用户手动执行此操作?防止用户访问管理页面
有关信息,我使用这个脚本:http://php-login-script.com/
非常感谢!
我有一个带有会话控制的php登录页面。它将普通用户路由到info.php,管理员用户路由到info_admin.php。如果我使用“普通”用户登录,它会转到info.php,但是,在地址栏中,我可以访问info_admin.php,它不会将我踢出去,并允许我访问。我该如何控制或防止用户手动执行此操作?防止用户访问管理页面
有关信息,我使用这个脚本:http://php-login-script.com/
非常感谢!
只是为了让Lotus Notes的代码有点更紧凑:
<?php
if (!isset($_SESSION['user_level']) || ($_SESSION['user_level'] != 2)) {
header('Location: login.php');
exit;
}
?>
<!-- Your page HTML here -->
我迅速通过登录码扫描,这似乎是设置变量$_SESSION['user_level']
时英寸
要允许有2级唯一用户,例如用户首次登录,把这个在你的页面的顶部。它应该将任何不是二级用户的人重定向回登录页面。
<?php
if (isset($_SESSION['user_level'] && $_SESSION['user_level'] == 2) {
?>
<!-- Your page HTML here -->
<?php
} else {
header('Location: login.php');
}
?>
高层次的方法是,在登录时,存储在会话或数据库中的用户的访问级别。在每次页面调用时,检查该值。
只需添加一个额外的函数来检查用户级别 - 如果它处于或高于所需级别,则返回true。如果不是,则返回false和故障转移。然后在您想要保护的页面中,使用所需的保护级别触发功能。
例如:
function checkPerms($level) {
if ($level >= number) {
return true
} else {
failover here
}
}
然后在你的页面调用
checkperms(5);
编辑:如果你真的很漂亮的,你可以只添加一个额外的参数去原来的函数调用与用户级别,默认为最低值。然后,如果用户验证为已注册,则可以同时检查用户级别。
我使用这段代码,但没有显示页面。我如果(!isset($ _ SESSION ['user_level'] || $ _SESSION ['user_level']!= admin) – BigMike 2010-10-22 21:42:34
对不起,代码中有错误,我已经修复了它 – 2010-10-22 21:44:58
Mike,我刚做了一个回声$ _SESSION ['user_level'];它没有显示,但我知道它的工作原理,因为protect_page()函数正在使用Session控制,所以这个coule会失败的原因是什么? – BigMike 2010-10-22 21:53:58