--- session.inc?rev=1.14 2005-04-02 02:15:39.000000000 +0200 +++ session.inc 2005-04-02 20:43:53.000000000 +0200 @@ -8,7 +8,15 @@ session_set_save_handler("sess_open", "sess_close", "sess_read", "sess_write", "sess_destroy", "sess_gc"); session_start(); +if ($user->uid) { + sess_destroy(session_id()); + session_regenerate_id(); + _sess_save(session_id(), $user->uid); +} +function _sess_save($key, $uid = 0) { + db_query("INSERT INTO {sessions} (sid, uid, hostname, timestamp) VALUES ('%s', 0, '%s', %d)", $key, $uid, $_SERVER["REMOTE_ADDR"], time()); +} /*** Session functions *****************************************************/ function sess_open($save_path, $session_name) { @@ -25,7 +33,7 @@ function sess_read($key) { $result = db_query_range("SELECT u.*, s.* FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.sid = '%s' AND u.status < 3", $key, 0, 1); if (!db_num_rows($result)) { - db_query("INSERT INTO {sessions} (sid, uid, hostname, timestamp) VALUES ('%s', 0, '%s', %d)", $key, $_SERVER["REMOTE_ADDR"], time()); + _sess_save($key); $result = db_query("SELECT u.* FROM {users} u WHERE u.uid = 0"); }