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

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

-roee- 26-10-06 18:01

מערכת "מחוברים עכשיו"
 
שלום



כתבתי קוד של מערכת שמציגה את המחוברים עכשיו אבל היא לא ממש עובדת...



המסד הוא כזה:

PHP קוד:

 CREATE TABLE `sessions` (
  `
sidvarchar(255NOT NULL default '',
  `
timevarchar(255NOT NULL default '',
  `
is_userint(11NOT NULL default '0',
  `
user_namevarchar(255NOT NULL default ''
ENGINE=MyISAM DEFAULT CHARSET=latin1





בתחילת הדף אני מייבא את הפונקציה update_session

ובסיום הדף אני מייבא את הפונקציה close_session



להלן הפונקציות:

PHP קוד:

 function update_sessions()
 {

  
session_start();
  
$s_id session_id();
  
$time time();
  
  if( 
$_SESSION['site_session'] == )
  {
   
mysql_query("update sessions set time='$time' where sid='$s_id'");
  } else {
   
$_SESSION['site_session'] = 1;
   if( ! isset(
$_COOKIE['site_user']) )
   {
    
$is_user 0;
   } else {
    
$is_user 1;
   }
   
$user_name $this->username(); // זה לא חשוב כרגע... 

   
mysql_query("insert into sessions (sid,time,is_user,user_name) values('$s_id','$time','$is_user','$user_name')");
  }

 }

 function 
close_sessions()
 {

  
$time time() - 30;
  
mysql_query("delete from sessions where time <= '$time'");

 } 



עכשיו כדי להציג את המשתמשים המחוברים אני עושה ככה:

PHP קוד:

$now_logged_in mysql_query("select * from sessions where is_user='1'");
while( 
$l mysql_query($now_logged_in) )
{
$user mysql_query("select * from users where user_name='{$l['user_name']}'"));
$l['user_id'] = $user['id'];
echo 
"- <a href=\"index.php?act=profile&amp;id={$l['user_id']}\">{$l['user_name']}</a>";




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



מישהו יודע מה הבעיה?

אני אשמח לקבל תשובה בהקדם.



תודה ויום טוב

RS324 26-10-06 18:04

קודם כל... למה זה לא עובד ?
כי עשית ככה :

PHP קוד:

$time time() - 30

בסגירה ?
מה ניסית לעשות ? 30 דקות ? אם כן תכפיל את זה ב 60
30 שעות ? תכפיל ב 3600
כי TIME הולך לפי שניות, לא לפי דקות...

-roee- 26-10-06 18:27

ניסיתי לעשות שזה ימחק מה שגדול מ 30 שניות
מה לא טוב בזה?

RS324 26-10-06 18:35

תבטל את המחיקה....בכלל ותראה איך זה מגיב....

עריכה
----
במחשבה שניה, דרך שתהיה הרבה יותר יעילה וטובה....
תוסיף שדה במסד תקרא לו EXPIRE ואז תכניס אליו את הערך של
time()+30
ואז אחרי זה תמחוק את מה ש TIME של עכשיו גדול מהם לפי ה EXPIRE
יסדר לך הרבה בעיות...

4ior 26-10-06 18:50

בדקת בכלל אם זה מוסיף את הנתונים למסד?
אם זה לא מוסיף תוסיף ככה:
`sessions`
:)

רומן 26-10-06 18:55

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

RS324 26-10-06 18:58

ציטוט:

נכתב במקור על ידי 4ior
בדקת בכלל אם זה מוסיף את הנתונים למסד?
אם זה לא מוסיף תוסיף ככה:
`sessions`
:)

אתה יודע למה בכלל משתמשים בזה ? או שסתם הגבת בלי קשר ?

4ior 26-10-06 19:02

ציטוט:

נכתב במקור על ידי RS324
אתה יודע למה בכלל משתמשים בזה ? או שסתם הגבת בלי קשר ?

כשאני לא שם אותם אז זה לא מוסיף לי.

RS324 26-10-06 19:04

ציטוט:

נכתב במקור על ידי 4ior
כשאני לא שם אותם אז זה לא מוסיף לי.

אז כנראה שהבעיה אצלך היא אחרת
זה נועד לעטוף את זה ולגרום ל MYSQL להסתכל על זה כ STRING בלבד
ולא כמשהו אחר... כנראה שאתה משתמש בשמור שהם שמורים במערכת
כמו ORDER, DESCRIBE וכדומה

DorWD 26-10-06 21:53

קוד:

while( $l = mysql_query($now_logged_in) )
זה לא אמור להיות עם mysql_fetch_array או משו? :\


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

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