我有一個帶有會話控制的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