28. april 2004 - 14:44Der er
16 kommentarer og 1 løsning
users online script
Heysa!
Jeg har lavet dette lille script:
if(!session_is_registered('online')){ @mysql_query("INSERT INTO du_users_online (session_id, activity, ip_address, refurl, user_agent) VALUES ('".session_id()."', NOW(), '{$_SERVER['REMOTE_ADDR']}', '{$_SERVER['HTTP_REFERER']}', '{$_SERVER['HTTP_USER_AGENT']}')"); session_register('online'); } else { if(session_is_registered('username')){ @mysql_query("UPDATE du_users_online SET activity=NOW(), member='y' WHERE session_id='".session_id()."'"); } } if(session_is_registered('online')){ @mysql_query("UPDATE du_users_online SET activity=NOW() WHERE session_id='".session_id()."'"); }
og trækker det ud med:
$limit_time = time() - 60; // 60 * det antal minutter du vil have den skal opdatere $sql = mysql_query("SELECT count(*) FROM du_users_online WHERE UNIX_TIMESTAMP(activity) >= $limit_time AND member='n' GROUP BY ip_address") or die (mysql_error()); $sql_member = mysql_query("SELECT count(*) FROM du_users_online WHERE UNIX_TIMESTAMP(activity) >= $limit_time AND member='y' GROUP BY ip_address") or die (mysql_error()); $visits = mysql_num_rows($sql); $members = mysql_num_rows($sql_member);
Og udskriver så bare $visits og $members.
Men nu vil jeg gerne udvide det, så man kan se hvilke burgere der er online, men kan ikke lige se hvordan det skal gøres. brugernavnet skal komme fra en $_SESSION['username'];, eller hvis du har andre ideer er det self også okay.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Hvordan jeg får $_SESSION[username] smidt i db'en. Hvis det er det eneste som skal til, hvilket jeg ikke er sikker på.
Har prøvet at gøre således: if(!session_is_registered('online')){ @mysql_query("INSERT INTO du_users_online (session_id, activity, ip_address, refurl, user_agent, username) VALUES ('".session_id()."', NOW(), '{$_SERVER['REMOTE_ADDR']}', '{$_SERVER['HTTP_REFERER']}', '{$_SERVER['HTTP_USER_AGENT']}','{$_SESSION['username']}')"); session_register('online'); } else { if(session_is_registered('username')){ @mysql_query("UPDATE du_users_online SET activity=NOW(), member='y' WHERE session_id='".session_id()."'"); } } if(session_is_registered('online')){ @mysql_query("UPDATE du_users_online SET activity=NOW() WHERE session_id='".session_id()."'"); }
Og selvfølgelig oprettet feltet i tabellen, men den vil ikke smide navnet i $_SESSION i tabellen. Tror det er der problemet ligger. Skal siges den ikke kommer med fejl eller andet, den gør det bare ikke.
sure.. Men ved ikke hvad han mener eller hvor han mener. Vidste jeg hvad problemet var havde jeg ikke spurgt.
Synes godt om
Slettet bruger
28. april 2004 - 18:21#9
Du får en duplicate entry fejl fordi du ikke kan sætte det samme session_id ind i et row der allerede ejer det session_id, fordi session_id er en Primary Key. (Dvs unik - og så må der ikke være to ens)
pacr00n: Ja det er jeg klar over.. Men har ikke lige en ide til hvordan det forhindres, og scriptet stadig virker.
Ved logout lavede jeg en query hvor den slettede session_id der var = session_id. Og det fungerede fint, men nytter jo selvfølgelig ikke noget hvis brugeren vælger at lukke browseren istedet for at logge ud. Så det er jo det første problem der skal løses før problemet med $_SESSION['username'] kan løses...
Synes godt om
Slettet bruger
28. april 2004 - 23:02#12
Jeg troede rent faktisk at sessions blev afsluttet hvis browseren blev lukket - men det gør den så åbenbart ikke. - You got me...
pacroon: jo, sessions afsluttes, når browseren lukkes.
human: når der kommer aktivitet på siden, skal du sørger for at der bliver ryddet op i databasen, så har du løst problemet med at folk ikke logger ud, og ikke bliver slettet i DB
Det vil sige.. At jeg skal lave en query, som er på alle sider, som tjekker at activity i db, er blevet ældre, end en session lever? Men hvor langtid lever en session, når man ikke har sat noget udløbstid på den?
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.