လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> အခန်းကဏ် and များနှင့်ခွင့်ပြုချက်ကိုနှိုင်းယှဉ်ရန် array_diff_ey () ကိုသုံးပါ

အခန်းကဏ် and များနှင့်ခွင့်ပြုချက်ကိုနှိုင်းယှဉ်ရန် array_diff_ey () ကိုသုံးပါ

M66 2025-06-06

ခွင့်ပြုချက်ထိန်းချုပ်ရေးစနစ်များကိုတီထွင်သည့်အခါအခန်းကဏ် and နှင့်ခွင့်ပြုချက်များ၏စီမံခန့်ခွဲမှုသည်အရေးကြီးသောကဏ် aspect တစ်ခုဖြစ်သည်။ ကျိုးကြောင်းဆီလျော်သောခွင့်ပြုချက်ချထားပေးခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်အရင်းအမြစ်များကိုအရင်းအမြစ်များအသုံးပြုခြင်းအပေါ်တိကျသောထိန်းချုပ်မှုရှိသည်ဟုကျွန်ုပ်တို့အားသေချာစေနိုင်သည်။ ဤရည်မှန်းချက်အောင်မြင်ရန် PHP သည်ကိရိယာများကိုထောက်ပံ့ပေးသည်။ Array_diff_ey () သည်ခွင့်ပြုချက်ထိန်းချုပ်မှုကိုကိုင်တွယ်သောအခါအခန်းကဏ် and နှင့်ခွင့်ပြုချက်များကိုနှိုင်းယှဉ်ရန်အလွန်အသုံးဝင်သောလုပ်ဆောင်ချက်တစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည်ထပ်ဆင့်ခွင့်ပြုချက်စီမံခန့်ခွဲမှုရရှိရန်အခန်းကဏ် and နှင့်ခွင့်ပြုချက်များကိုနှိုင်းယှဉ်ရန် array_diff_ey () ကို မည်သို့အသုံးပြုရမည်ကိုမိတ်ဆက်ပေးလိမ့်မည်။

1 ။ array_diff_ey () function ကိုမိတ်ဆက်ခြင်း

array_diff_key () function ကိုနှစ်ခုသို့မဟုတ်နှစ်ခုထက်ပိုသော array များအကြားကွဲပြားခြားနားသောသော့ချက်အမည်များဖြင့် element များကိုတွက်ချက်ရန်အသုံးပြုသည်။ အထူးသဖြင့်၎င်းသည်ပထမခင်းကျင်းသော inarray တွင်ရှိသောသော့ချက်တန်ဖိုးအတွဲများပါ 0 င်သည်။

function ရှေ့ပြေးပုံစံ:

 array_diff_key(array $array1, array $array2, array ...$arrays): array
  • $ array1 : နှိုင်းယှဉ်ခံရဖို့ပထမ ဦး ဆုံးခင်းကျင်း။

  • $ array2 : ပထမ ဦး ဆုံးခင်းကျင်းနှင့်နှိုင်းယှဉ်လျှင်အခြားခင်းကျင်း။

  • Return: ပထမခင်းကျင်းမှုတွင်တည်ရှိနေသောသော့ချက်အမည်များပါသောသော့ချက်တန်ဖိုးအတွဲတစ်ခုကိုပြန်ပို့သည်။

2 ။ array_diff_key () ကို ခွင့်ပြုချက်စီမံခန့်ခွဲမှုတွင်မည်သို့အသုံးပြုရမည်နည်း။

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

  1. အခန်းကဏ် array : အခန်းကဏ် and ၏အခန်းကဏ် and နှင့်အခန်းကဏ် has ၏ခွင့်ပြုချက်ပါ 0 င်သည်။

  2. System Pervice Array : System-Supported ခွင့်ပြုချက်အားလုံးပါ 0 င်သည်။

ငါတို့မှာ array အမျိုးအစားနှစ်မျိုးရှိတယ်ဆိုပါစို့။

 // အခန်းကဏ် possy ကိုခွင့်ပြုချက်ခင်းကျင်း
$rolePermissions = [
    'view_dashboard' => true,
    'edit_profile'   => true,
    'delete_account' => false,
];

// စနစ်ခွင့်ပြုချက်ခင်းကျင်း
$systemPermissions = [
    'view_dashboard' => true,
    'edit_profile'   => true,
    'delete_account' => true,
    'create_report'  => false,
];

အပေါ်ကဥပမာမှာ $ Roletermissermissions Array သည်အခန်းကဏ် of ၏ခွင့်ပြုချက်ကိုကိုယ်စားပြုသည်

ကျွန်ုပ်တို့သည်လက်ရှိအခန်းကဏ် role တွင်ပါ 0 င်သည့်ခွင့်ပြုချက်များကိုရှာဖွေရန်သို့မဟုတ်အခန်းကဏ် permits ဌာန်းချက်များနှင့်စနစ်ခွင့်ပြုချက်အကြားခြားနားချက်ကိုနှိုင်းယှဉ်ကြည့်ရန်လိုသည်ဆိုပါစို့။

3 ။ array_diff_key မှတဆင့်အခန်းကဏ် permissions နှင့် system permissions များကိုနှိုင်းယှဉ်ကြည့်ပါ။

ကျနော်တို့ array_diff_ey () ကို အသုံးပြု. လက်ရှိအခန်းကဏ် in အတွက်ပျောက်ဆုံးနေသောခွင့်ပြုချက်များကိုရှာဖွေရန်ကျွန်ုပ်တို့အသုံးပြုနိုင်သည်။ အောက်တွင်ဖော်ပြထားသည့်အတိုင်း:

 // ရာထူးမှည့်များအတွက်ပျောက်ဆုံးခွင့်ခွင့်ပြုချက်တွက်ချက်
$missingPermissions = array_diff_key($systemPermissions, $rolePermissions);

// ပျောက်ဆုံးနေသောခွင့်ပြုချက် output
print_r($missingPermissions);

output ရလဒ် -

 Array
(
    [create_report] => false
)

ဆိုလိုသည်မှာအခန်းကဏ် role သည် Create_report ခွင့်ပြုချက်မရရှိနိုင်ကြောင်းဆိုလိုသည်။ ဒီခွင့်ပြုချက်ကိုစနစ်မှာရရှိနိုင်ပေမယ့်အခန်းကဏ် is ကိုခွင့်မပြုပါဘူး။

4 ။ ပိုမိုတိကျသောခွင့်ပြုချက်စီမံခန့်ခွဲမှုအကောင်အထည်ဖော်ပါ

array_diff_key () နှင့်အတူကျွန်ုပ်တို့သည်ခွင့်ပြုချက်ကွဲပြားခြားနားမှုများကိုအခန်းကဏ် and များနှင့်စနစ်များအကြားအလွယ်တကူနှိုင်းယှဉ်နိုင်သည်။ သို့သော်ပိုမိုတိကျသောခွင့်ပြုချက်စီမံခန့်ခွဲမှုရရှိရန်အတွက်အသုံးပြုသူအခန်းကဏ် and များနှင့်ခွင့်ပြုချက်လိုအပ်ချက်များနှင့်အတူတက်ကြွသောခွင့်ပြုချက်စစ်ဆေးမှုများပြုလုပ်ရန်ဤနည်းလမ်းကိုတိုးချဲ့နိုင်သည်။

ဥပမာအားဖြင့်, သုံးစွဲသူ၏အခန်းကဏ် on အပေါ် အခြေခံ. စစ်ဆင်ရေးများနှင့်ထိန်းချုပ်သူရှိခွင့်ပြုချက်တောင်းခံရန်ခွင့်ပြုမထား,

 function checkPermission($rolePermissions, $systemPermissions, $requestedPermission)
{
    // ခွင့်ပြုချက်ကိုအခန်းကဏ် permissions တွင်ပါ 0 င်သည်ကိုစစ်ဆေးပါ
    if (isset($rolePermissions[$requestedPermission])) {
        return $rolePermissions[$requestedPermission];
    }

    // ဒီခွင့်ပြုချက်အခန်းကဏ် perform ကိုခွင့်ပြုချက်အတွက်မဟုတ်ပါဘူးလျှင်,System Permissions အတွက်ရှိ, ရှိမရှိစစ်ဆေးပါ
    if (isset($systemPermissions[$requestedPermission])) {
        return $systemPermissions[$requestedPermission];
    }

    return false;
}

$requestedPermission = 'create_report';
if (checkPermission($rolePermissions, $systemPermissions, $requestedPermission)) {
    echo "Permission granted!";
} else {
    echo "Permission denied!";
}

ဤဥပမာတွင်အသုံးပြုသူသည်အခန်းကဏ် role ခွင့်ပြုချက်များ၏နှိုင်းယှဉ်မှုရလဒ်များကိုနှိုင်းယှဉ်ခြင်းနှင့်စနစ်ခွင့်ပြုချက်အပေါ် အခြေခံ. ခွဲစိတ်ကုသမှုလုပ်ဆောင်ရန်ခွင့်ပြုထားခြင်းရှိမရှိကိုပြောင်းလွယ်ပြင်လွယ်ထိန်းချုပ်နိုင်သည်။

V. နိဂုံးချုပ်

PHP ၏ Array_Diff_key () function ကိုအသုံးပြုခြင်းအားဖြင့်ကျွန်ုပ်တို့သည်စံခွင့်ပြုချက်ဖြင့်အခန်းကဏ် permissions များကိုထိရောက်စွာနှိုင်းယှဉ်နိုင်သည်။ ဤနည်းအားဖြင့် developer များသည်မတူညီသောအခန်းကဏ် feature များကိုသာ 0 င်ရောက်နိုင်ရန်သာကွဲပြားခြားနားသောအခန်းကဏ် appross များကိုသာ 0 င်ရောက်နိုင်ရန်သေချာစေနိုင်သည်။

အမှန်တကယ် applications များအရခွင့်ပြုချက်ထိန်းချုပ်မှု၏ဒီဇိုင်းသည်တစ်ခုတည်းသော function တစ်ခုပေါ်တွင်သာမကအခန်းကဏ် and များနှင့်ခွင့်ပြုချက်အကြားဆက်နွယ်မှုကိုပိုမိုကောင်းမွန်စွာညှိနှိုင်းပြီးနောက်ဆုံးတွင်ခွင့်ပြုချက်စနစ်များကိုညှိနှိုင်းပါ။