نوع کد نویسی در بررسی سطح دسترسی ها
سلام دوستان
من بعد از مدتی شروع کردم مجدد PHP کار می کنم(چند وقتی ا کد زدن دلسرد شده بودم :D اینم آفت عدم کارگرفتن از دانش هست :) ). به همین ترتیب شروع کردم به ادامه مشاهده آموزش ها. الان در قسمت "مدیریت سطح دسترسی ها" هستم.
من دیدم که جناب آقاجانی یه خورده این قسمت رو پیچیده(از نظر من) کردند و خیلی کد بیشتر نوشتند، به همین دلیل من شروع کردم بر اساس ذهن خودم این قسمت رو به نوشتن.
1- من نمیدونم روش من درست هست یا نه! منتهی چند تستی که گرفتم مشکلی نداشنم، اگر شما احساس می کنید اشتباهی وجود داره خواهشا بیان کنید.
2+ به نظر شما روشی که تو آموزش ها بیان شده بهتر هست یا این روش؟ چون می خوام بدونم اگر روش من درست هست ادامه بدم و الگوریتم بهتری رو تولید کنم.
کد من:
function getAccess(){ $access = $_SESSION['access']; $accessName = ''; if(empty($access)){ $access = $_SESSION['access']; }else{ $access = explode(',',$access); $countAccess = count($access); for($i = 0;$i < $countAccess;$i++){ if($access[$i] == 'vip'){ $accessName .= ',' . "کاربر ویژه" ; } if($access[$i] == 'admin'){ $accessName .= ',' . "مدیر" ; } if($access[$i] == 'superadmin'){ $accessName .= ',' . "مدیریت کل" ; } if($access[$i] == 'user'){ $accessName .= ',' . "کاربر عادی" ; } } } return $accessName; } function isAccess($value = null,$value1 = null,$value2 = null){ $accessNames = getAccess(); $accessNames = explode(',',$accessNames); $countAccess = count($accessNames); for($i=0;$i<=$countAccess;$i++){ if($accessNames[$i] == $value || $accessNames[$i] == $value1 || $accessNames[$i] == $value2){ return true; } } return false; } function isAdmin(){ return isAccess('مدیریت کل'); } function isVip(){ return isAccess('کاربر ویژه'); }
روشی که استاد گفتن روش خیلی استاندارد و خوبی نیست. برای اهداف آموزشی بیشتر مناسبه اما در یک سیستم تجاری و حرفه ای معمولا نیاز به کنترل سطوح دسترسی به صورت کاملا داینامیک به ماژول های مختلف سایت هست. برای یک سیستم استاندارد حداقل 4 جدول نیاز هست.
در تصویر زیر ERD مربوط به سیستم کنترل سطح دسترسی کاربران رو می بینید که من خودم در پروژه هام استفاده میکنم.
در جدول ماژول ها (rnd_module) نام کنترلر و متدی که میخوام سطح دسترسی رو بهش مشخص کنیم تعریف میکنیم ، اطلاعات رو من بدین شکل ذخیره میکنم:
و در جدول permission ها مشخص میکنیم که کدام گروه کاربری به کدام ماژول دسترسی دارد
و در سطح controller با استفاده از این اطلاعات میتونیم جز به جز سیستم رو دسترسیش رو تعیین کنیم.
مثلا گروه نویسندگان >> دسترسی افزودن خبر رو داشته باشن اما حذف خبر رو نداشته باشند
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .