[Snippet] Prevent Double Login (update)

Prevent Double Login
Credit: BNa
With this Snippet, the first user logged out instantly, if second user logged in with same account
open
includes/functions.php
find
before add
If you want it absolute restrictive (both users with same user account are logged out), use
instead of
Credit: BNa
With this Snippet, the first user logged out instantly, if second user logged in with same account
open
includes/functions.php
find
- Code: Select all
// The following assigns all _common_ variables that may be used at any point in a template.
$template->assign_vars(array(
before add
- Code: Select all
// First User logged out instantly, if second User logged in with same Account / BNa / 2011
if ((!$user->data['is_bot']) && ($user->data['user_id'] !== ANONYMOUS))
{
$sql = 'SELECT session_id, session_user_id, session_start
FROM ' . SESSIONS_TABLE . '
WHERE session_user_id = ' . (int) $user->data['user_id'] . '
ORDER BY session_start DESC';
$result = $db->sql_query($sql);
$row = $db->sql_fetchrowset($result);
$db->sql_freeresult($result);
if ((isset($row[0]['session_user_id']) && isset($row[1]['session_user_id']))
&& ($row[0]['session_user_id'] = $row[1]['session_user_id']))
{
$row_user_id = $row[0]['session_user_id'];
$row_session_id = $row[0]['session_id'];
$row_session_start = $row[0]['session_start'];
$sql = 'DELETE FROM ' . SESSIONS_TABLE . "
WHERE session_user_id = " . (int) $row_user_id . "
AND session_id != '$row_session_id'
AND session_start != '$row_session_start'";
$db->sql_query($sql);
$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
WHERE user_id = ' . (int) $row_user_id . "
AND last_ip <> '" . $user->data['session_ip']. "'";
$db->sql_query($sql);
}
}
// First User logged out instantly, if second User logged in with same Account/ BNa / 2011
If you want it absolute restrictive (both users with same user account are logged out), use
- Code: Select all
$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
WHERE user_id = ' . (int) $row_user_id;
$db->sql_query($sql);
instead of
- Code: Select all
$sql = 'DELETE FROM ' . SESSIONS_KEYS_TABLE . '
WHERE user_id = ' . (int) $row_user_id . "
AND last_ip <> '" . $user->data['session_ip']. "'";
$db->sql_query($sql);