Delete login key upon logout ... knew I forgot something from my original code

git-svn-id: file:///svn/phpbb/trunk@5178 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
Paul S. Owen 2005-07-05 01:26:23 +00:00
parent 7146a6bc41
commit cfa87f2407

View file

@ -379,17 +379,25 @@ class session
$sql = 'DELETE FROM ' . SESSIONS_TABLE . " $sql = 'DELETE FROM ' . SESSIONS_TABLE . "
WHERE session_id = '" . $db->sql_escape($this->session_id) . "' WHERE session_id = '" . $db->sql_escape($this->session_id) . "'
AND session_user_id = " . $this->data['user_id']; AND session_user_id = " . (int) $this->data['user_id'];
$db->sql_query($sql); $db->sql_query($sql);
if ($this->data['user_id'] != ANONYMOUS) if ($this->data['user_id'] != ANONYMOUS)
{ {
// Delete existing session, update last visit info first! // Delete existing session, update last visit info first!
$sql = 'UPDATE ' . USERS_TABLE . ' $sql = 'UPDATE ' . USERS_TABLE . '
SET user_lastvisit = ' . $this->data['session_time'] . ' SET user_lastvisit = ' . (int) $this->data['session_time'] . '
WHERE user_id = ' . $this->data['user_id']; WHERE user_id = ' . (int) $this->data['user_id'];
$db->sql_query($sql); $db->sql_query($sql);
if (!empty($this->cookie_data['k']))
{
$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
WHERE user_id = ' . (int) $this->data['user_id'] . "
AND key_id = '" . $db->sql_escape($this->cookie_data['k']) . "'";
$db->sql_query($sql);
}
// Reset the data array // Reset the data array
$this->data = array(); $this->data = array();
@ -400,6 +408,7 @@ class session
$this->data = $db->sql_fetchrow($result); $this->data = $db->sql_fetchrow($result);
$db->sql_freeresult($result); $db->sql_freeresult($result);
} }
$this->set_cookie('u', '', $this->time_now - 31536000); $this->set_cookie('u', '', $this->time_now - 31536000);
@ -414,7 +423,6 @@ class session
return true; return true;
} }
/** /**
* Session garbage collection * Session garbage collection
* *
@ -436,7 +444,7 @@ class session
// Firstly, delete guest sessions // Firstly, delete guest sessions
$sql = 'DELETE FROM ' . SESSIONS_TABLE . ' $sql = 'DELETE FROM ' . SESSIONS_TABLE . '
WHERE session_user_id = ' . ANONYMOUS . ' WHERE session_user_id = ' . ANONYMOUS . '
AND session_time < ' . ($this->time_now - $config['session_length']); AND session_time < ' . (int) ($this->time_now - $config['session_length']);
$db->sql_query($sql); $db->sql_query($sql);
// Keep only the most recent session for each user // Keep only the most recent session for each user
@ -456,13 +464,13 @@ class session
// Update last visit time // Update last visit time
$sql = 'UPDATE ' . USERS_TABLE. ' u, ' . SESSIONS_TABLE . ' s $sql = 'UPDATE ' . USERS_TABLE. ' u, ' . SESSIONS_TABLE . ' s
SET u.user_lastvisit = s.session_time, u.user_lastpage = s.session_page SET u.user_lastvisit = s.session_time, u.user_lastpage = s.session_page
WHERE s.session_time < ' . ($this->time_now - $config['session_length']) . ' WHERE s.session_time < ' . (int) ($this->time_now - $config['session_length']) . '
AND u.user_id = s.session_user_id'; AND u.user_id = s.session_user_id';
$db->sql_query($sql); $db->sql_query($sql);
// Delete everything else now // Delete everything else now
$sql = 'DELETE FROM ' . SESSIONS_TABLE . ' $sql = 'DELETE FROM ' . SESSIONS_TABLE . '
WHERE session_time < ' . ($this->time_now - $config['session_length']); WHERE session_time < ' . (int) ($this->time_now - $config['session_length']);
$db->sql_query($sql); $db->sql_query($sql);
set_config('session_last_gc', $this->time_now); set_config('session_last_gc', $this->time_now);
@ -491,7 +499,7 @@ class session
$db->sql_query($sql); $db->sql_query($sql);
} }
$del_user_id .= (($del_user_id != '') ? ', ' : '') . $row['session_user_id']; $del_user_id .= (($del_user_id != '') ? ', ' : '') . (int) $row['session_user_id'];
$del_sessions++; $del_sessions++;
} }
while ($row = $db->sql_fetchrow($result)); while ($row = $db->sql_fetchrow($result));
@ -521,14 +529,13 @@ class session
if ($config['allow_autologin'] && $config['max_autologin_time']) if ($config['allow_autologin'] && $config['max_autologin_time'])
{ {
$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . ' $sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
WHERE last_login < ' . (time() - ($config['max_autologin_time'] * 86400)); WHERE last_login < ' . (time() - ((int) $config['max_autologin_time'] * 86400));
$db->sql_query($sql); $db->sql_query($sql);
} }
return; return;
} }
/** /**
* Sets a cookie * Sets a cookie
* *