လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Bindec () နှင့် bit operations နှင့်ပေါင်းစပ်ထားသောအသုံးပြုသူခွင့်ပြုချက်များကိုအသုံးပြုပါ

Bindec () နှင့် bit operations နှင့်ပေါင်းစပ်ထားသောအသုံးပြုသူခွင့်ပြုချက်များကိုအသုံးပြုပါ

M66 2025-05-29

Web စနစ်တွင်သုံးစွဲသူခွင့်ပြုချက်ထိန်းချုပ်မှုသည်အလွန်အရေးကြီးသောအပိုင်းဖြစ်သည်။ ကျိုးကြောင်းဆီလျော်သောခွင့်ပြုချက်စနစ်သည် system ၏အထိခိုက်မခံသောအချက်အလက်များကိုကာကွယ်နိုင်ရုံသာမကသုံးစွဲသူများသည်၎င်းတို့ဝင်ရောက်သင့်သည့်အကြောင်းအရာများကိုသာ 0 င်ရောက်နိုင်ရန်လည်းသေချာစေနိုင်သည်။ PHP တွင်ကျွန်ုပ်တို့သည်ထိရောက်သောနှင့်ပိုမိုကျယ်ပြန့်သောခွင့်ပြုချက်ထိန်းချုပ်ရေးယန္တရားကိုတည်ဆောက်ရန် Bindec () လုပ်ဆောင်မှုကိုပေါင်းစပ်ရန် Bindec () function ကိုသုံးနိုင်သည်။ ဤဆောင်းပါးသည်အသုံးပြုသူခွင့်ပြုချက်စနစ်တစ်ခုတည်ဆောက်ရန်ဤနှစ်ခုကိုမည်သို့အသုံးပြုရမည်ကိုအသေးစိတ်မိတ်ဆက်ပေးပါမည်။

1 ။ အခြေခံအတွေးအခေါ်များ

ခွင့်ပြုချက်ထိန်းချုပ်မှု၏အဓိကအယူအဆမှာခွင့်ပြုချက်တစ်ခုစီကို 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 () ကိုသုံးနိုင်သည်။

2 ။ ခွင့်ပြုချက်ကိုဆုံးဖြတ်ရန် Bindec () နှင့် bit operations များကိုသုံးပါ

ပထမ ဦး စွာအသုံးပြုသူတစ် ဦး ၏ခွင့်ပြုချက်တန်ဖိုးမှာ 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 "အသုံးပြုသူသည်ခွင့်ပြုချက်ကိုတည်းဖြတ်ခြင်းမရှိပါ";
}
?>

အထက်ပါကုဒ်သည်သတ်မှတ်ထားသောခွင့်ပြုချက်အနည်းငယ်ကိုဆုံးဖြတ်ရန် နှင့်အော် ပရေတာကိုအသုံးပြုသည်။ ဤနည်းအားဖြင့်အသုံးပြုသူသည်တိကျသောခွင့်ပြုချက်ရှိမရှိကိုအလွယ်တကူဆုံးဖြတ်နိုင်သည်။

3 ။ ခွင့်ပြုချက်

အသုံးပြုသူအားခွင့်ပြုချက်ပေးရန်သင်သည်ခွင့်ပြုချက်နည်းသောသို့မဟုတ်တွက်ချက်ရန်သာလိုအပ်သည် ( | ):

 <?php
$userPermissions = 0; // ကန ဦး ခွင့်ပြုချက်ဖြစ်ပါတယ်0

// ထည့်သည်“အကြောင်းအရာကိုကြည့်ပါ”နှင့်“Post အကြောင်းအရာ”ခွင့်ပြုချက်
$userPermissions |= PERM_VIEW;
$userPermissions |= PERM_PUBLISH;

echo $userPermissions; // output ကိုဖြစ်ပါတယ်33
?>

4 ။ ခွင့်ပြုချက်ကိုပြန်လည်ရုပ်သိမ်း

ခွင့်ပြုချက်ကိုရုပ်သိမ်းခြင်းကိုရုပ်သိမ်းရန် ( & ~ ) စစ်ဆင်ရေးလိုအပ်သည်။

 <?php
// 原始ခွင့်ပြုချက်为:လမ်းပြ、ပုံနှိပ်ရန်ပြင်ဆင်ရေးသား、ထုတ်ဝေခြင်း(အခုချက်ချင်း 1 + 2 + 32 = 35)
$userPermissions = 35;

// ပြန်လည်ရုပ်သိမ်း“ပုံနှိပ်ရန်ပြင်ဆင်ရေးသား”ခွင့်ပြုချက်
$userPermissions &= ~PERM_EDIT;

echo $userPermissions; // ရလဒ်ကတော့33
?>

5 ။ ဒေတာဘေ့စသိုလှောင်မှုခွင့်ပြုချက်နှင့်အတူပေါင်းစပ်

နောက်ဆုံးတွင်ခွင့်ပြုချက်တန်ဖိုးများကိုနောက်ဆုံးတွင် အသုံးပြုသူများ ဇယား၏ ခွင့်ပြုချက် နေရာများကဲ့သို့သောဒေတာဘေ့ စ် နယ်ပယ်များတွင်သိမ်းဆည်းထားနိုင်သည်။

 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 "အကြောင်းအရာကိုဖျက်ရန်သင်ခွင့်ပြုချက်မရှိပါ";
}
?>

6 ။ လက်တွေ့ကျသောလျှောက်လွှာဥပမာ

နောက်ခံစီမံခန့်ခွဲမှုစနစ်ကိုဥပမာတစ်ခုအနေဖြင့်စီမံခန့်ခွဲသူမှတ်တမ်းများ 0 င်ရောက်သောအခါစနစ်သည်အချို့သော function ခလုတ်များကိုပြသနိုင်မလိုအပ်ကြောင်းဆုံးဖြတ်ရန်လိုအပ်သည်။ သင်က template ကိုထိန်းချုပ်နိုင်ပါသည်:

 <?php
if ($adminPermissions & PERM_USER) {
    echo '<a href="https://m66.net/admin/users">အသုံးပြုသူများကိုစီမံပါ</a>';
}
?>

7 ။ အားသာချက်များနှင့်သက်ဆိုင်တဲ့အခြေအနေများ

ဤခွင့်ပြုချက်ကို bit operations များမှအကောင်အထည်ဖော်သည့်ခွင့်ပြုချက်နည်းလမ်းမှာအောက်ပါအားသာချက်များရှိသည်။

  • သိုလှောင်ခြင်းစုဆောင်းခြင်း - ခွင့်ပြုချက်အားလုံးသည်အာကာသထဲသို့ချွေတာသော One One One Field သို့ပေါင်းစည်းထားသည်။

  • ထိရောက်သောစုံစမ်းမှု - ခွင့်ပြုချက်တရားစီရင်ခြင်းသည်အနည်းငယ်လည်ပတ်မှုဖြင့်ပြီးစီးခဲ့သည်။ အမြန်နှုန်းသည်အလွန်မြန်သည်။

  • extension ပြောင်းလွယ်ပြင်လွယ် - ခွင့်ပြုချက်အသစ်တစ်ခုကိုထည့်ရန်ခွင့်ပြုချက်အသစ်တစ်ခုထည့်ပါ။

အတော်လေး fixed ခွင့်ပြုချက်အမျိုးအစားများနှင့်အတူအသေးစားနှင့်အလတ်စားစနစ်များသို့မဟုတ်အခြေအနေများအတွက်သင့်လျော်သော။ အကယ်. system permissions များသည်ရှုပ်ထွေးပြီးရှုထောင့်မှထိန်းချုပ်ရန်လိုအပ်ပါကအသေးစိတ်ကိုရှာဖွေရန် Database နှင့်ပေါင်းစပ်ထားသော RBAC (RBAC) ကိုအသုံးပြုရန်အကြံပြုသည်။

ကောက်ချက်

Bindec () နှင့် bit opertication ပေါင်းစပ်ခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်ရိုးရှင်းသောနှင့်ထိရောက်သောအသုံးပြုသူခွင့်ပြုချက်စီမံခန့်ခွဲမှုနည်းလမ်းကိုအကောင်အထည်ဖော်နိုင်သည်။ PHP တွင် binary နှင့် Integers များကိုစီမံရန်အလွန်အဆင်ပြေပြီးပေါ့ပါးသောခွင့်ပြုချက်ထိန်းချုပ်ရေးစနစ်များကိုတည်ဆောက်ရန်အလွန်အဆင်ပြေပါသည်။ အမှန်တကယ်စီမံကိန်းများအရခွင့်ပြုချက်နှင့်စာဖတ်နိုင်မှုကိုမြှင့်တင်ရန်ခွင့်ပြုချက်တပ်ဖွဲ့များနှင့်လုပ်ဆောင်မှုဆိုင်ရာယုတ္တိဗေဒများကိုစာသင်ခန်းများသို့မဟုတ်လုပ်ဆောင်မှုများကိုအတန်းများသို့မဟုတ်လုပ်ဆောင်ချက်များကိုအတန်းများသို့ 0 င်ရောက်ရန်အကြံပြုပါသည်။