הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   PHP גישות / הרשאות (https://hosts.co.il/forums/showthread.php?t=82241)

SniR-S 23-04-10 16:46

PHP גישות / הרשאות
 
אני עובד על מערכת כלשהי,
אני צריך שלכל משתמש יהיו גישות מסויימות שאני אבחר,
ורציתי להתייעץ איתכם ולשאול מה הדרך של כל אחד ואחד.
חשבתי על לעשות תיבות סימון checkbox לכל גישה (הגדרה)
ולכל אחד מהם יהיה ערך
נגיד 1 = הגדרות אתר
2 = הודעות
3 = מחיקה
(סתם לצורך הדוגמה כמובן)

אבל אני לא יודע איך להמשיך,
איזה תנאים לעשות, מה להכניס למסד, מה לשלוף
אין לי משהו יעיל בראש כרגע :-)

orelcn 23-04-10 23:06

http://www.html-form-guide.com/php-f...-checkbox.html
יש לך אחלה של הסבר פה...

SniR-S 24-04-10 10:42

לא עוזר לי, אני יודע איך להשתמש עם checkbox ולשלב עם PHP וכל מה שכתוב במאמר שהבאת.
זה לא מה שאני צריך,
תודה בכל מקרה, אשמח אם מישהו יעזור.

OrPol 24-04-10 12:28

תוסיף בטבלה של משתמשים עמודה שנקראת PERMISSIONS,
קח את כל ההרשאות, תן להן מספרים כמו שאמרת (1,5,707 או מה שזה לא יהיה), ותכניס לטבלה בפורמט של 1|5|707.
תעשה פונקציה שבודקת הרשאות משתמש לפי הUserID שלו בSESSION, (שתשלוף מהמסד ותעשה EXPLODE, ותחזיר כמערך),
ואז, בכל עמוד שהגדרת לו הרשאה - נגיד ניהול הגדרות האתר - 707, תעשה WHILE($per=getUserPer())
ואם ההרשאה מופיעה, תן לו גישה, אם לא - תן HEADER או הודעה.


בהצלחה.

SniR-S 24-04-10 12:46

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

$per "707|5|1";
  
$per explode("|"$per);
$per["0"]; // הרשאה 707
$per["1"]; // הרשאה 5
$per["2"]; // הרשאה 1 

בגדול אני יודע את זה, לא הבנתי את ההמשך..מזאת אומרת להחזיר כמערך
איך הלולאה תעבוד ?

OrPol 24-04-10 12:53

ציטוט:

נכתב במקור על ידי Snir Shamka (פרסם 761934)
אוקי, תודה, זה הסגנון שרציתי לעשות פחות או יותר.
אני יודע להשתמש ב explode, אבל לא יודע בדיוק איך להחזיר את זה כמערך.
PHP קוד:

$per "707|5|1";
  
$per explode("|"$per);
$per["0"]; // הרשאה 707
$per["1"]; // הרשאה 5
$per["2"]; // הרשאה 1 

בגדול אני יודע את זה, לא הבנתי את ההמשך..מזאת אומרת להחזיר כמערך
איך הלולאה תעבוד ?

PHP קוד:

function getUserPer(){
$per "707|5|1"
$per explode("|"$per); 
return 
$per;
}

$per=getUserPer();
while(
$per){
if(
$per == "this page/'s permission")
    
show_page();



SniR-S 24-04-10 13:33

תודה, אני אנסה את זה.

Shay Ben Moshe 24-04-10 14:18

אל תעשה את זה. יש דרך יותר פשוטה.
תן לכל אחד ערך בינארי, זאת אומרת הראשון יהיה 1, השני 10, השלישי 100 וכולי.
לפני ההכנסה למסד תשתמש בbindec, תאחסן במסד smallint כמספר דצימלי וכשאתה שולף תוכל להמיר חזרה לדצימלי עם decbin.
הכי הגיוני. דרך אגב ככה זה הקונספט של ההרשאות מFTP.

OrPol 24-04-10 14:29

ציטוט:

נכתב במקור על ידי Shay Falador (פרסם 761941)
אל תעשה את זה. יש דרך יותר פשוטה.
תן לכל אחד ערך בינארי, זאת אומרת הראשון יהיה 1, השני 10, השלישי 100 וכולי.
לפני ההכנסה למסד תשתמש בbindec, תאחסן במסד smallint כמספר דצימלי וכשאתה שולף תוכל להמיר חזרה לדצימלי עם decbin.
הכי הגיוני. דרך אגב ככה זה הקונספט של ההרשאות מFTP.

התכוונת לבינארי?


נ.ב.
תפסיק להיות כזה גאון :)

מת עליך בנאדם :P

intercooler3819 24-04-10 16:47

הכי הגיוני והכי פשוט להבנה.. הדרגות הולכות מהכי קיצונית בגישות להכי קיצונית בצד שני
משמע אם הגישות הם 1 2 3 אז מישהו בעל גישה 2 יש לו גישה כמו של יוזר בעל גישה 1 וכמו יוזר בעל גישת 2
מישהו שיש לו גישה 3 יש לו גישה 2, גישה 1 וגם גישה 3

ואז התנאי הוא משהו כמו
if ($permission >= 2) {}

עדיף לעשות את ההרשאות בקפיצות של 10 כלומר
10
20
30
40
והלאה
ככה שאם תרצה להוסיף הרשאה אין בעיה להוסיף איזה 11 באמצע ולא לשפר את הקוד...

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

SniR-S 24-04-10 17:15

לא הבנתי כ"כ את מה ששי אמר, ואת השימוש בבינארי ודצימלי.
התכנון הוא לעשות מספר גישות בסדר ממוספר
כאשר יש לכל אחד ID משלו.

ככה שאין צורך להשתמש בקפיצות של 10
כי המספר לא משנה..

מה שכן אור, יש בעיה עם מה שהבאת לי.
מכיוון שה- explode מייצא מתוך מערך
את ההרשאה שאני מבקש, לדוגמא:
PHP קוד:

function getUserPer(){
$per "707|5|1";
$per explode("|"$per); // מייצא את הנתונים למערך $per אני צריך לבחור כל $per בנפרד ולכן התנאי שלמטה לא תקף..
return $per;
}

$per=getUserPer();
while(
$per){
if(
$per == "this page/'s permission"// התנאי הזה לא יכול לעבוד רק אם אני אבחר מה להציב לו ואשנה את המשתנה $per לדוגמא ל $per["1"] ואז ההרשאה תהיה 5 סתם דוגמא
    
show_page();


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

if ($permission >= {} 

מהסיבה הפשוטה, שלכל משתמש אני רוצה הרשאות שונות (התאמה אישית)...

OrPol 24-04-10 18:29

ציטוט:

נכתב במקור על ידי Snir Shamka (פרסם 761950)
לא הבנתי כ"כ את מה ששי אמר, ואת השימוש בבינארי ודצימלי.
התכנון הוא לעשות מספר גישות בסדר ממוספר
כאשר יש לכל אחד ID משלו.

ככה שאין צורך להשתמש בקפיצות של 10
כי המספר לא משנה..

מה שכן אור, יש בעיה עם מה שהבאת לי.
מכיוון שה- explode מייצא מתוך מערך
את ההרשאה שאני מבקש, לדוגמא:
PHP קוד:

function getUserPer(){
$per "707|5|1";
$per explode("|"$per); // מייצא את הנתונים למערך $per אני צריך לבחור כל $per בנפרד ולכן התנאי שלמטה לא תקף..
return $per;
}

$per=getUserPer();
while(
$per){
if(
$per == "this page/'s permission"// התנאי הזה לא יכול לעבוד רק אם אני אבחר מה להציב לו ואשנה את המשתנה $per לדוגמא ל $per["1"] ואז ההרשאה תהיה 5 סתם דוגמא
    
show_page();


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

if ($permission >= {} 

מהסיבה הפשוטה, שלכל משתמש אני רוצה הרשאות שונות (התאמה אישית)...

לא הבנת.
ה$per שאתה מוציא בפונקציה, זה כל ההרשאות שמקושרות למשתמש מסויים. סבבה?
נגיד אם הוא רשאי להיכנס רק להגדרות (שצריך הרשאה 707 בשבילן), בעמודה של ההרשאות בשורה שלו בטבלה, יהיה כתוב רק 707.

התנאי בודק האם יש לו את ההרשאה הזאת מבין כל ההרשאות שלו (WHILE),
כל הקטע בWHILE זה שהוא עובר על כל המערך בחיפוש אחר ההרשאה.
אם אין את ההרשאה בהרשאות שלו, התנאי לא יתקיים.

ואז, בIF PERMISSION = 707, אתה מציג את הדף.

אתה יכול להגדיל ולעשות ולהכניס את הקוד הזה, (שמונע ממך גישה לדף) בSOURCES של המערכת, ולכל דף להגדיר את הPERMISSION שלו בראש העמוד.
למשל

PHP קוד:

<?php
$CNF
['page_permission'] = 707;
require_once(
"./sources/permissions_val.php");

$is_val getUserPer($_SESSION['user_id'], $CNF['page_permission']);
?>

ופשוט לכתוב פונקציה שבודקת את כל ההרשאות של המשתמש מהמסד ומחזירה TRUE או FALSE

SniR-S 24-04-10 19:00

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

foreach ($per as $per) {} 

נ.ב, תודה לכל מי שעזר..


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

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