עבור לתוכן

PHP פונקצייה עם משתנה גלובלי

Featured Replies

פורסם

שלום לכולם, יש לי אתר ובו יש דפי ניהול שנותנים רק למנהלים

או משגיחים להיכנס אליהם (מי שרוצה להיכנס נאלץ להקליד משתמש וסיסמא)

הדפים מוגנים על ידי קובץ בשם protect.php ככה שכול פעם שקובץ ניהול עולה,

הקוד הבא מופיע בראשו:

<?php
global $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 function
function CheckUserPass($user,$pass)
{
global $user_group; //Get our user requested group

$enc_pass = md5($pass); //Our encrypted password

do {
$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 access

return false;
}

הפונקצייה פשוט לא עובדת, לעומת זאת עם הקוד הבא הפונקצייה כן עובדת:

//Our check password function
function 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 access

return false;
}

ניתן ליראות שפשוט העברתי את המשתנה user_group למשתנה אחר

מה שכן ביצע את הפונקצייה כפי שהיא צריכה לעבוד, אבל מצד שני לא שינה

את המשתנה user_group שאני כן צריך הוא ישתנה בהתאם לשינויים

שהפונקצייה עושה עליו.

אשמח לדעת אם שכחתי משהו, או טעיתי, תודה רבה!

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים