פורסם 2009 ביולי 2816 שנים שלום לכולם, יש לי אתר ובו יש דפי ניהול שנותנים רק למנהליםאו משגיחים להיכנס אליהם (מי שרוצה להיכנס נאלץ להקליד משתמש וסיסמא)הדפים מוגנים על ידי קובץ בשם protect.php ככה שכול פעם שקובץ ניהול עולה,הקוד הבא מופיע בראשו:<?phpglobal $user_group;$user_group = 1;require("library/protect.php"); //Protect our page from guests?>עכשיו, המשתנה user_group הוא בעצם מה שמתאר מאיזה קבוצה יהיה מותר להיכנס (כאשר לדוגמא user_group = 1 אז משתמשים שיש להם גישה שהיא ברמה אחת ומעלה יוכלו לצפות בדף), משתמשים ברמה 1 הם משגיחים, וברמה 2 הם מנהלים ככה שמי שרוצה לגשת לדף הזה יצטרך להיות משגיח או מנהל.אבל הבעיה היא כזו, כאשר אני מנסה לשנות את המשתנה user_group מתוך פונקצייה הפונקצייה פשוט לא עובדת כמו שצריך,לדוגמא://Our check password functionfunction CheckUserPass($user,$pass){global $user_group; //Get our user requested group$enc_pass = md5($pass); //Our encrypted passworddo { $query = "SELECT user FROM user_pass WHERE(user='".$user."' AND pass='".$enc_pass."' AND user_group='".$user_group."')"; $result = mysql_query($query) or die(mysql_error()); //Select our database (used to compare the user name and password database). if (mysql_num_rows($result) == 1) return true; } while(++$user_group <= 2); //Increasing the user_group variable allows to users from higher levels to get access where users with lower have accessreturn false;}הפונקצייה פשוט לא עובדת, לעומת זאת עם הקוד הבא הפונקצייה כן עובדת://Our check password functionfunction CheckUserPass($user,$pass){global $user_group; //Get our user requested group$enc_pass = md5($pass); //Our encrypted password$user_group_cnt = $user_group; //This variable allows users from higher levels to access lower user groups pages.do { $query = "SELECT user FROM user_pass WHERE(user='".$user."' AND pass='".$enc_pass."' AND user_group='".$user_group_cnt."')"; $result = mysql_query($query) or die(mysql_error()); //Select our database (used to compare the user name and password database). if (mysql_num_rows($result) == 1) return true; } while(++$user_group_cnt <= 2); //Increasing the user_group_cnt variable allows to users from higher levels to get access where users with lower have accessreturn false;}ניתן ליראות שפשוט העברתי את המשתנה user_group למשתנה אחרמה שכן ביצע את הפונקצייה כפי שהיא צריכה לעבוד, אבל מצד שני לא שינהאת המשתנה user_group שאני כן צריך הוא ישתנה בהתאם לשינוייםשהפונקצייה עושה עליו.אשמח לדעת אם שכחתי משהו, או טעיתי, תודה רבה!
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.