הרשם שאלות ותשובות רשימת חברים לוח שנה חיפוש הודעות מהיום סמן פורומים כנקראו

   
|!|

 
 
כלים לאשכול תצורת הצגה
Prev הודעה קודמת   הודעה הבאה Next
ישן 16-11-06, 21:19   # 1
iliakap2002
חבר פורום
 
מיני פרופיל
תאריך הצטרפות: Jan 2006
הודעות: 122

iliakap2002 לא מחובר  

מערכת הרשאות מעניינת שחשבתי עליה

טוב אז זו מערכת הרשאות מעניינת לדעתי שעלה לי הרעיון שלה מ FSO ב ASP, מערכת ההרשאות לקבצים.

שימו לב לטבלה בעמוד שם ומה שכתוב מתחת:
http://www.webmaster.org.il/guide.as...fso&class=file

מה שמעניין שהחיבור של מספרים שונים בחיים לא יניב תוצאה שווה, מה שמאפשר לנו לחבר ושהמחשב יידע מה ההרשאות שניתנו.
עכשיו אני חשבתי, למה לא לקחת את המערכת הזאת ובמקום זה, לעשות את אותה המערכת למנהלים באתר מסויים, לכל אחד הרשאה משלו.

אז נגיד:
נגיד:
1= מסוגל לערוך הודעות
2= מסוגל לכתוב הודעות נעוצות
4= מסוגל למחוק הודעות
8= מסוגל להשעות משתמשים
16= מסוגל להוציא משתמשים להורג

עכשיו נגיד ה מנהל יכול 1+2+8=11 זאת אומרת, שלמנהל יש הרשאות, לעריכת הודעות, לכתיבת הודעות ולהשעיית משתמשים.

עכשיו אנחנו צריכים משהו שייקרא את זה, אני כמה ימים חשבתי על כל מיני דברים מסובכים, עד שאתמול הבנתי עד כמה זה פשוט וקליל.

פשוט מאוד ניקח שוב את ההרשאה 11, נתחיל מההרשאה בעלת המספר הגבוה ביותר וכך נרד לראשונה בצורה כזאת:
בודקים אם ההרשאה שניתנה גדולה מההרשאה שאנחנו בודקים, אם כן אז ההרשאה נכונה, מפחיתים את התוצאה עכשיו וממשיכים הלאה, אם לא, פשוט ממשיכים הלאה.

זאת אומרת:
נבדוק, האם 11 > 16 כמובן שלא, לכן נמשיך הלאה,
11>8
כן, נדע שהמנהל מסוגל להשעות משתמשים, עכשיו נפחית מ 11 8, נשאר 3

נבדוק עם 4, נקבל שלילי.

נבדוק עם 2
יש, נדע שהמנהל מסוגל לנעוץ הודעות, נפחית 2 מ 3, נשאר לנו 1.

נבדוק עם 1, נקבל חיובי.
נדע שהוא מסוגל לערוך הודעות נפחית שוב כי אנחנו בלולאה.

כמובן שיבואו כל מיני בדיקות ואם לא יישאר לנו 0 בסוף ההרשאה לא יכולה ליהיות קיימת
אם בהתחלה ההרשאה היא 0, זה אומר שאין לו בכלל הרשאות וכל מיני כאלו.

תוכנית קטנה שבניתי ב C ברבע שעה, הדגמה לקריאת הרשאות:

קוד:
#include<stdio.h>
#include<conio.h>
/*
premissions:
0=1
1=2
2=4
3=8
4=16
5=32
6=64
7=128
*/
void main()
{
 int i, userprem, prems[8], boolprems[8];
 clrscr();
 prems[0] = 1;
 userprem = 1 + 4 + 128 + 64;
 for(i=1; i<8; i++)
 {
  prems[i]=prems[i-1]*2;
  printf("%d, ", prems[i-1]);
 }
 printf("%d\n", prems[7]);
     /*
 for(i=0; i<8; i++)
 {
  boolprems[i] = 0;
  printf("%d, ", boolprems[i]);
 }
     */
 printf("\n");
 for(i=7; i>=0; i--)
 {
  if(userprem >= prems[i])
  {
         // printf("%d\n", userprem);
   boolprems[i] = 1;
   userprem = userprem - prems[i];
   printf("\n%d\n", userprem);
  }
 }
 for(i=0; i<8; i++)
 {
  if(boolprems[i] == 1)
  {
   printf("%d, ", prems[i]);
  }
        }
 getch();
}
אל תשימו לב לבלאגן בקו, רבע שעה.
זהו, אם יש לי טעויות אתם מוזמנים לתקן אוחתי באלגוריתם, תודה, כל הבדיקות שם לא עשיתי אבל זסה עניין שולי.
סתם רצילי לשתף.

ערב טוב לכולם, איליה.
  Reply With Quote
 

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 

כלים לאשכול
תצורת הצגה

חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 18:36.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ