Okay, I actually found out how to list the users, but you have the following line of code:
define('SITE_ONLINE_EXPIRE', 900); What is the 900? Is that 900 seconds? Thanks, Matt http://sweetphp.com "Matt Palermo" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > This looks like a good solution. What is the best way to list the current > users, since the sesssionData seems to be serialized in the db or something? > I just want to list out all the users from the db. > > Thanks, > > Matt > http://sweetphp.com > > > "Greg Donald" <[EMAIL PROTECTED]> wrote in message > news:[EMAIL PROTECTED] > > On Fri, 2 Jul 2004 01:13:14 -0400, Matt Palermo <[EMAIL PROTECTED]> > wrote: > > > > > > Is it possible to make a table of all logged in users session ids and > then > > > check to see if the session still exists every couple minutes? So every > > > minute or two, it would go through the table and for each record it > would > > > get the session id, then check that session id to see if it's still in > > > existance. Is this possible to do? > > > > This is simple to accomplish if you use database managed PHP sessions. > > You can override the default PHP session handling functions with > > session_set_save_handler() then you will know what users are logged in > > by what sessions are still active. Here's how I do it: > > > > My sessions.php that I require in all other scripts on the site: > > > > <?php > > > > if(ini_get('session.use_trans_sid')==0){ > > ini_set("session.use_trans_sid", 1); > > } > > > > $sessionDbHandler = ''; > > > > function sessionOpen($save_path, $session_name){ > > global $sessionDbHandler; > > if(! $sessionDbHandler = mysql_pconnect(DB_HOST, DB_USER, DB_PASS)){ > > die("Can't get sessionDbHandler: ".mysql_error()); > > } > > return true; > > } > > > > function sessionClose(){ > > return true; > > } > > > > function sessionRead($key){ > > $sql = " > > select > > sessionData > > from > > ".TB_USER_SESSIONS." > > where > > sessionID = '$key' > > and > > sessionExpire > UNIX_TIMESTAMP() > > "; > > $query = mysql_query($sql); > > if(mysql_num_rows($query)){ > > return mysql_result($query, 0, "sessionData"); > > } > > return false; > > } > > > > function sessionWrite($key, $val){ > > $value = addslashes($val); > > $sql = " > > replace into ".TB_USER_SESSIONS." ( > > sessionID, > > sessionData, > > sessionExpire > > ) values ( > > '$key', > > '$value', > > UNIX_TIMESTAMP() + ".SITE_ONLINE_EXPIRE." > > ) > > "; > > return mysql_query($sql); > > } > > > > function sessionDestroy($key){ > > $sql = " > > delete from > > ".TB_USER_SESSIONS." > > where > > sessionID = '$key' > > "; > > return mysql_query($sql); > > } > > > > function sessionGarbageCollection(){ > > $sql = " > > delete from > > ".TB_USER_SESSIONS." > > where > > sessionExpire < UNIX_TIMESTAMP() > > "; > > $query = mysql_query($sql); > > return sqlAffectedRows(); > > } > > > > session_set_save_handler("sessionOpen", "sessionClose", > > "sessionRead", "sessionWrite", "sessionDestroy", > > "sessionGarbageCollection"); > > session_start(); > > > > ?> > > > > Some config.php variables: > > define('DB_HOST', 'localhost'); > > define('DB_DB', 'db_name'); > > define('DB_USER', 'db_user'); > > define('DB_PASS', 'db_pass'); > > define('TB_USER_SESSIONS', 'userSessions'); > > define('SITE_ONLINE_EXPIRE', 900); > > > > The table structure for userSessions looks like this: > > > > CREATE TABLE `userSessions` ( > > `sessionID` varchar(32) NOT NULL default '', > > `sessionData` text NOT NULL, > > `sessionExpire` int(10) unsigned NOT NULL default '0', > > PRIMARY KEY (`sessionID`) > > ) TYPE=MyISAM; > > > > When a user logs in you are probably already setting some kind of > > userID or userName, so make that a session variable if it is not > > already. Then it's just a matter of listing the userNames or userIDs > > out of the userSessions table. > > > > You might want to force session garbage collection at the top of each > > script by calling sessionGarbageCollection(). That will make the > > username listings more realtime. > > > > > > -- > > Greg Donald > > http://destiney.com/ -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php