שלום.
היום עשיתי פונקציה המנהלת את פרטיהמשתמש, כלומר כאשר אני קורא לפונקציה אני מציב לה הוראה ולפיה היא נותנת לי את המידע שאני זקוק לו לפי ההוראה שנתתי לה.
עכשיו הוספתי חלק אשר בודק האם המשתמש מחובר.
החלק הזה בודק אם המשתמש מופיע כמחובר במסד + האם הזמן שהוא יכול להיות מחובר לא עבר את המקסימום שהוקצב לו.
(בהיתחברות אני לוקח את הזמן הנוכחי (בעזרת TIME) ומוסיף לזה מספר מסויים של שניות ומכניס למסד.
לאחר מכן בבדיקה עצמה אני בודק אם הזמן הנוכחי לא גדול מהזמן שהוקצב לו)
עכשיו הכל עבד עד שעשיתי משהו...שלצערי אני לא יודע מה זה היה והאופציה שהוספתי תמיד מחזירה לי ערך FALSE.
מה שגורם לכך שהמשתמש מתנתק.
הפונקציה במלואה:
PHP קוד:
function userinf($need = 0, $do = 0) {
$IP = $_SERVER['REMOTE_ADDR'];
$where = "`srLogged`='1' AND `srIP`='{$IP}'";
$select = db::select('users', $where, FALSE, 1);
$count = db::count($select);
$row = db::fetch($select);
$ctime = time();
$utime = $row['srLogTime'];
switch ($need) {
case 0:
if(($count == 1) AND ($ctime < $utime)) {
return TRUE;
} else {
db::update('users',"srLogged#0,srLocation#0,srIP#0,srLogTime#0","srIP={$IP}");
return FALSE;
}
case 1:
return $row['srUName'];
break;
case 2:
return $row['srFName'].' '.$row['srLName'];
break;
case 3:
return $row['srID'];
break;
case 4:
if($do) {
$uid = userinf(3);
db::update('users', "srLocation#{$do}", "srID={$uid}");
} else {
skin::error('Missing arrgument for "userinf()" function ($do)');
}
break;
default:
skin::error('Invalid argument for "userinf()" function ($need)');
}
}
הקריאה לשימוש באופציה של הבדיקה אם המשתמש מחובר:
PHP קוד:
if(userinf()) {
echo 'logged';
}
אשמך מאוד אם תעזרו לי עם הבעיה
עריכה:
בדקתי מספר פעמיים שהזמן שהוקצב למשתמש אכן גדול מהזמן הנוכחי (בשניות לפי TIME)...אפילו שמתי שם 999999999999999999999999 (שזה בהרבה יותר גדול מהזמן הנוכחי)
אך עדין זה מחזיר לי ערך של שקר =/