Web စနစ်တွင်သုံးစွဲသူခွင့်ပြုချက်ထိန်းချုပ်မှုသည်အလွန်အရေးကြီးသောအပိုင်းဖြစ်သည်။ ကျိုးကြောင်းဆီလျော်သောခွင့်ပြုချက်စနစ်သည် system ၏အထိခိုက်မခံသောအချက်အလက်များကိုကာကွယ်နိုင်ရုံသာမကသုံးစွဲသူများသည်၎င်းတို့ဝင်ရောက်သင့်သည့်အကြောင်းအရာများကိုသာ 0 င်ရောက်နိုင်ရန်လည်းသေချာစေနိုင်သည်။ PHP တွင်ကျွန်ုပ်တို့သည်ထိရောက်သောနှင့်ပိုမိုကျယ်ပြန့်သောခွင့်ပြုချက်ထိန်းချုပ်ရေးယန္တရားကိုတည်ဆောက်ရန် Bindec () လုပ်ဆောင်မှုကိုပေါင်းစပ်ရန် Bindec () function ကိုသုံးနိုင်သည်။ ဤဆောင်းပါးသည်အသုံးပြုသူခွင့်ပြုချက်စနစ်တစ်ခုတည်ဆောက်ရန်ဤနှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်မိတ်ဆက်ပေးပါမည်။
ခွင့်ပြုချက်ထိန်းချုပ်မှု၏အဓိကအယူအဆမှာခွင့်ပြုချက်တစ်ခုစီကို binary bit တစ်ခုအဖြစ်သတ်မှတ်ရန်ဖြစ်သည်။ ဥပမာအားဖြင့် 8-bit permission field သည်ခွင့်ပြုချက်အမျိုးအစား 8 မျိုးကိုကိုယ်စားပြုနိုင်သည်။
ဥပမာအားဖြင့်, အောက်ပါခွင့်ပြုချက်များကိုသတ်မှတ်သည်ဟုဆိုပါစို့။
ခွင့်ပြုချက်အနေအထား | ခွင့်ပြုချက်တန်ဖိုး | ခွင့်ပြုချက်အမည် |
---|---|---|
ပေ 0 | 1 | အကြောင်းအရာကိုကြည့်ပါ |
1 | 2 | အကြောင်းအရာကိုတည်းဖြတ်ပါ |
2 | 4 | အကြောင်းအရာကိုဖျက်ပစ်ပါ |
သုံး | 8 | အကြောင်းအရာပြန်လည်သုံးသပ် |
4 | 16 | အသုံးပြုသူများကိုစီမံပါ |
5 | 32 | Post အကြောင်းအရာ |
6 | 64 | အစီရင်ခံစာကြည့်ရန် |
7 | 128 | စူပါအုပ်ချုပ်ရေးမှူး |
အသုံးပြုသူ၏ခွင့်ပြုချက်ကို binary string ကိုကိုယ်စားပြုနိုင်သည် (ဥပမာ - 1010101010 ) ကိုကိုယ်စားပြုသည်။ ကျွန်ုပ်တို့သည်ဤ string ကိုဒ decimal မကိန်းတစ်ခုထဲသို့ပြောင်းလဲရန် Bindec () ကိုသုံးနိုင်သည်။
ပထမ ဦး စွာအသုံးပြုသူတစ် ဦး ၏ခွင့်ပြုချက်တန်ဖိုးမှာ 170 ဖြစ်သည်ဟုဆိုပါစို့, ၎င်းသည် 10101010 ဖြစ်ပြီး 10101010 မှာ binary 1, 3, 5 နှင့် 7 တွင်ခွင့်ပြုချက်ရှိသည်။
ခွင့်ပြုချက်တစ်ခုရှိမရှိဆုံးဖြတ်ရန်အောက်ပါကုဒ်ကိုသုံးနိုင်သည်။
<?php
// ခွင့်ပြုချက်ကွန်ရက်များကိုသတ်မှတ်ပါ
define('PERM_VIEW', 1); // 00000001
define('PERM_EDIT', 2); // 00000010
define('PERM_DELETE', 4); // 00000100
define('PERM_APPROVE', 8); // 00001000
define('PERM_USER', 16); // 00010000
define('PERM_PUBLISH', 32); // 00100000
define('PERM_REPORT', 64); // 01000000
define('PERM_ADMIN', 128); // 10000000
// အသုံးပြုသူရဲ့ခွင့်ပြုချက်တန်ဖိုးကဆိုပါစို့170(ဒုံ10101010)
$userPermissions = 170;
// တည်းဖြတ်ခွင့်ပြုချက်ရှိမရှိစစ်ဆေးပါ
if ($userPermissions & PERM_EDIT) {
echo "အသုံးပြုသူသည်ခွင့်ပြုချက်ကိုတည်းဖြတ်ခြင်းရှိသည်";
} else {
echo "အသုံးပြုသူသည်ခွင့်ပြုချက်ကိုတည်းဖြတ်ခြင်းမရှိပါ";
}
?>
အထက်ပါကုဒ်သည်သတ်မှတ်ထားသောခွင့်ပြုချက်အနည်းငယ်ကိုဆုံးဖြတ်ရန် နှင့်အော် ပရေတာကိုအသုံးပြုသည်။ ဤနည်းအားဖြင့်အသုံးပြုသူသည်တိကျသောခွင့်ပြုချက်ရှိမရှိကိုအလွယ်တကူဆုံးဖြတ်နိုင်သည်။
အသုံးပြုသူအားခွင့်ပြုချက်ပေးရန်သင်သည်ခွင့်ပြုချက်နည်းသောသို့မဟုတ်တွက်ချက်ရန်သာလိုအပ်သည် ( | ):
<?php
$userPermissions = 0; // ကန ဦး ခွင့်ပြုချက်ဖြစ်ပါတယ်0
// ထည့်သည်“အကြောင်းအရာကိုကြည့်ပါ”နှင့်“Post အကြောင်းအရာ”ခွင့်ပြုချက်
$userPermissions |= PERM_VIEW;
$userPermissions |= PERM_PUBLISH;
echo $userPermissions; // output ကိုဖြစ်ပါတယ်33
?>
ခွင့်ပြုချက်ကိုရုပ်သိမ်းခြင်းကိုရုပ်သိမ်းရန် ( & ~ ) စစ်ဆင်ရေးလိုအပ်သည်။
<?php
// 原始ခွင့်ပြုချက်为:လမ်းပြ、ပုံနှိပ်ရန်ပြင်ဆင်ရေးသား、ထုတ်ဝေခြင်း(အခုချက်ချင်း 1 + 2 + 32 = 35)
$userPermissions = 35;
// ပြန်လည်ရုပ်သိမ်း“ပုံနှိပ်ရန်ပြင်ဆင်ရေးသား”ခွင့်ပြုချက်
$userPermissions &= ~PERM_EDIT;
echo $userPermissions; // ရလဒ်ကတော့33
?>
နောက်ဆုံးတွင်ခွင့်ပြုချက်တန်ဖိုးများကိုနောက်ဆုံးတွင် အသုံးပြုသူများ ဇယား၏ ခွင့်ပြုချက် နေရာများကဲ့သို့သောဒေတာဘေ့ စ် နယ်ပယ်များတွင်သိမ်းဆည်းထားနိုင်သည်။
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50),
permissions INT DEFAULT 0
);
အသုံးပြုသူခွင့်ပြုချက်ကိုဖတ်ပါ။
<?php
// 假设从数据库中取出ခွင့်ပြုချက်字段为 $permissions
$permissions = 170;
if ($permissions & PERM_DELETE) {
echo "သင်အကြောင်းအရာကိုဖျက်ပစ်နိုင်သည်";
} else {
echo "အကြောင်းအရာကိုဖျက်ရန်သင်ခွင့်ပြုချက်မရှိပါ";
}
?>
နောက်ခံစီမံခန့်ခွဲမှုစနစ်ကိုဥပမာတစ်ခုအနေဖြင့်စီမံခန့်ခွဲသူမှတ်တမ်းများ 0 င်ရောက်သောအခါစနစ်သည်အချို့သော function ခလုတ်များကိုပြသနိုင်မလိုအပ်ကြောင်းဆုံးဖြတ်ရန်လိုအပ်သည်။ သင်က template ကိုထိန်းချုပ်နိုင်ပါသည်:
<?php
if ($adminPermissions & PERM_USER) {
echo '<a href="https://m66.net/admin/users">အသုံးပြုသူများကိုစီမံပါ</a>';
}
?>
ဤခွင့်ပြုချက်ကို bit operations များမှအကောင်အထည်ဖော်သည့်ခွင့်ပြုချက်နည်းလမ်းမှာအောက်ပါအားသာချက်များရှိသည်။
သိုလှောင်ခြင်းစုဆောင်းခြင်း - ခွင့်ပြုချက်အားလုံးသည်အာကာသထဲသို့ချွေတာသော One One One Field သို့ပေါင်းစည်းထားသည်။
ထိရောက်သောစုံစမ်းမှု - ခွင့်ပြုချက်တရားစီရင်ခြင်းသည်အနည်းငယ်လည်ပတ်မှုဖြင့်ပြီးစီးခဲ့သည်။ အမြန်နှုန်းသည်အလွန်မြန်သည်။
extension ပြောင်းလွယ်ပြင်လွယ် - ခွင့်ပြုချက်အသစ်တစ်ခုကိုထည့်ရန်ခွင့်ပြုချက်အသစ်တစ်ခုထည့်ပါ။
အတော်လေး fixed ခွင့်ပြုချက်အမျိုးအစားများနှင့်အတူအသေးစားနှင့်အလတ်စားစနစ်များသို့မဟုတ်အခြေအနေများအတွက်သင့်လျော်သော။ အကယ်. system permissions များသည်ရှုပ်ထွေးပြီးရှုထောင့်မှထိန်းချုပ်ရန်လိုအပ်ပါကအသေးစိတ်ကိုရှာဖွေရန် Database နှင့်ပေါင်းစပ်ထားသော RBAC (RBAC) ကိုအသုံးပြုရန်အကြံပြုသည်။
Bindec () နှင့် bit opertication ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ရိုးရှင်းသောနှင့်ထိရောက်သောအသုံးပြုသူခွင့်ပြုချက်စီမံခန့်ခွဲမှုနည်းလမ်းကိုအကောင်အထည်ဖော်နိုင်သည်။ PHP တွင် binary နှင့် Integers များကိုစီမံရန်အလွန်အဆင်ပြေပြီးပေါ့ပါးသောခွင့်ပြုချက်ထိန်းချုပ်ရေးစနစ်များကိုတည်ဆောက်ရန်အလွန်အဆင်ပြေပါသည်။ အမှန်တကယ်စီမံကိန်းများအရခွင့်ပြုချက်နှင့်စာဖတ်နိုင်မှုကိုမြှင့်တင်ရန်ခွင့်ပြုချက်တပ်ဖွဲ့များနှင့်လုပ်ဆောင်မှုဆိုင်ရာယုတ္တိဗေဒများကိုစာသင်ခန်းများသို့မဟုတ်လုပ်ဆောင်မှုများကိုအတန်းများသို့မဟုတ်လုပ်ဆောင်ချက်များကိုအတန်းများသို့ 0 င်ရောက်ရန်အကြံပြုပါသည်။