תמיד רציתם לדעת איך לעשות מערכת הרשאות ? לפעילויות שונות במערכת ?
המדריך יוצא מתוך נקודת הנחה שיש לכם ידע בסיסי ב PHP (רצוי גם MYSQL)
ושיש לכם איזה שהיא מערכת שכוללת התחברות.
טוב אז ככה...
למה זה טוב ?
זה טוב למערכות שיש בהם הרבה משתמשים או קבוצות משתמשים ואתם רוצים שלכל קבוצה יהיה הרשאות שונות. לדוגמא : המשתמש יכול להעלות קבצים ? כן\לא המשתמש יכול לשנות עיצוב ? כן \ לא
עכשיו קודם כל נתחיל בהגדרה של האפשרויות שיכולות להיות אצלנו במערכת
לדוגמא :
PHP קוד:
$perms =
array(
'canread',
'canwrite',
'canadmin',
'canfuck',
'cansuckmydick',
);
עכשיו אני לא יודע מי למד בתיכון (או לומד) אלקטרוניקה ומחשבים
אבל יש 2 מצבים בסייסים, 0 ו 1
עכשיו במערכת שלנו, 0 מסמן לא יכול לעשות את הפעולה המבוקשת, ו 1 מסמן יכול לעשות את הפעולה המבוקשת.
עכשיו פונקציות הבסיס של המערכת :
PHP קוד:
function toPower($power = 0)
{
return base_convert($power,2,10);
}
function getperms($userpower = 0)
{
global $perms;
$base_power = base_convert($userpower,10,2);
$i =0;
foreach ($perms AS $key =>$val)
{
$user_premissions[$val] = (($base_power[$i] == 1) ? 1:0);
$i++;
}
return $user_premissions;
}
הפונקציצה הראשונה ממירה מספרי מבסיס בינארי ( 0 ו 1) לבסיס עשרוני (10)
כלומר כשאנחנו מוסיפים משתמש בפנאל ניהול, יהיה לנו לפי הסדר את הפעולות שמוגדרות במערך הראשוני
לדוגמא :
יכול לראות את המערכת ? כן \ לא
יכול לכתוב הודעות ? כן \ לא
כמובן שזה הולך לפי הסדר שהגדרנו בהתחלה
ככה שאחרי שאנחנו נעשה POST כלומר לשמור את המשתמש,
אנחנו נקבל את המידע ככה :
PHP קוד:
$_POST['canread'] = 1;
אז אנחנו נקח את כל המשתנים ונחבר אותם ביחד
ובסוף יהיה לנו שורה לפי מה שבחרנו לדוגמא 10101 אבל אנחנו לא יכולים להשתמש בזה ככה
לכן אנחנו נמיר את זה למספר עשרוני עם הפונקציה שכתבו קודם כך :
PHP קוד:
$userpower = topower(10101);
ואז בתוך USERPOWER אנחנו נקבל את המספר 21
ונשמור את המספר הזה במסד...תחת השורה של אותו משתמש
עכשיו כשהמשתמש מתחבר אז אנחנו מן הסתם מושכים את הפרטים שלו מהמסד
לדוגמא :
PHP קוד:
$user = $db->query_return("SELECT * FROM user WHERE userid='5'");
עכשיו בתוך USER יש לנו את כל הפרטים ובין השאר את power.
עכשיו אנחנו צריכים להמיר את זה להרשאות אז נשתמש בפונקציה השניה
ונעשה משהו כזה :
PHP קוד:
$user[permissions] = getperms($user[power]);
עכשיו יש בתוך המשתנה user[permissions] את כל ההרשאות
וזה נראה בערך ככה :
PHP קוד:
Array
(
[canread] => 1
[canwrite] => 0
[canadmin] => 1
[canfuck] => 0
[cansuck] => 1
)
עכשיו כל מה שנותן זה להשתמש בהרשאות שקיבלנו עבור המשתמש :
לדוגמא
PHP קוד:
if (!$user[permission][canread])
{
echo "you dont have permission to view this page";
die();
}
//rest of code here
וזה בערך הרעיון על רגל אחת.... מקווה שהבנתם ומי שלא אז תשאלו פה ואני אשתדל לעזור..
תהנו.