function rss_session_begin($user_id, $user_ip) { global $db, $cache, $config, $user; $page_array = extract_current_page(IP_ROOT_PATH); $forum_id = request_var(POST_FORUM_URL, 0); $forum_id = $forum_id < 0 ? 0 : $forum_id; $topic_id = request_var(POST_TOPIC_URL, 0); $topic_id = $topic_id < 0 ? 0 : $topic_id; if (function_exists('mysql_real_escape_string')) { $page_id = @mysql_real_escape_string(substr($page_array['page_full'], 0, 254)); } else { $page_id = substr(str_replace('\'', '%27', $page_array['page_full']), 0, 254); } $user_id = (int) $user_id; $password = md5($_SERVER['PHP_AUTH_PW']); $last_visit = 0; $current_time = time(); $expiry_time = $current_time - $config['session_length']; $sql = "SELECT *\n\t\tFROM " . USERS_TABLE . "\n\t\tWHERE user_id = " . $user_id; $db->sql_return_on_error(true); $result = $db->sql_query($sql); $db->sql_return_on_error(false); if (!$result) { ExitWithHeader('500 Internal Server Error', 'Could not obtain lastvisit data from user table'); } $user->data = $db->sql_fetchrow($result); if (isset($user->data['user_level']) && $user->data['user_level'] == JUNIOR_ADMIN) { $user->data['user_level'] = !defined('IN_ADMIN') && !defined('IN_CMS') ? ADMIN : MOD; } if ($user_id != ANONYMOUS && (empty($user->data) || $password != $user->data['user_password'])) { ExitWithHeader('500 Internal Server Error', 'Error while create session'); } $login = $user_id != ANONYMOUS ? 1 : 0; $is_banned = $user->check_ban($user_id, $user->ip, $user->data['user_email'], true); if ($is_banned) { ExitWithHeader("403 Forbidden", "You have been banned"); } list($sec, $usec) = explode(' ', microtime()); mt_srand((double) $sec + (double) $usec * 100000); $session_id = md5(uniqid(mt_rand(), true)); $sql = "INSERT INTO " . SESSIONS_TABLE . "\n\t\t(session_id, session_user_id, session_start, session_time, session_ip, session_page, session_forum_id, session_topic_id, session_logged_in, session_admin)\n\t\tVALUES ('" . $db->sql_escape($session_id) . "', {$user_id}, {$current_time}, {$current_time}, '" . $db->sql_escape($user_ip) . "', '" . $db->sql_escape($page_id) . "', '" . $db->sql_escape($forum_id) . "', '" . $db->sql_escape($topic_id) . "', {$login}, 0)"; $db->sql_return_on_error(true); $result = $db->sql_query($sql); $db->sql_return_on_error(false); if (!$result) { ExitWithHeader("500 Internal Server Error", "Error creating new session"); } $last_visit = $user->data['user_session_time'] > 0 ? $user->data['user_session_time'] : $current_time; $sql = "UPDATE " . USERS_TABLE . " SET user_session_time = {$current_time}, user_session_page = '{$page_id}', user_lastvisit = {$last_visit} "; if (LV_MOD_INSTALLED) { $sql .= ", user_totallogon = (user_totallogon + 1)"; } $sql .= " WHERE user_id = {$user_id}"; $db->sql_return_on_error(true); $result = $db->sql_query($sql); $db->sql_return_on_error(false); if (!$result) { ExitWithHeader("500 Internal Server Error", 'Error updating last visit time'); } $user->data['user_lastvisit'] = $last_visit; $user->data['session_id'] = $session_id; $user->data['session_ip'] = $user_ip; $user->data['session_user_id'] = $user_id; $user->data['session_logged_in'] = $login; $user->data['session_page'] = $page_id; $user->data['session_forum_id'] = $forum_id; $user->data['session_topic_id'] = $topic_id; $user->data['session_start'] = $current_time; $user->data['session_time'] = $current_time; $user->data['session_admin'] = 0; $user->data['session_key'] = ''; $SID = 'sid=' . $session_id; define('TEMP_SESSION', true); // Mighty Gorgon - BOT SESSION - BEGIN $user->data['is_bot'] = false; if ($user->data['user_id'] != ANONYMOUS) { $user->data['bot_id'] = false; } else { $bot_name_tmp = bots_parse($user_ip, $config['bots_color'], $user_agent, true); $user->data['bot_id'] = $bot_name_tmp['name']; if ($user->data['bot_id'] !== false) { $user->data['is_bot'] = true; bots_table_update($bot_name_tmp['id']); } } // Mighty Gorgon - BOT SESSION - END return $user->data; }
/** * Bots check... */ function bots_process() { global $config; if (!empty($this->data)) { $this->data['is_bot'] = false; $this->data['bot_id'] = false; if ($this->data['user_id'] == ANONYMOUS) { $bot_name_tmp = bots_parse($this->ip, $config['bots_color'], $this->browser, true); $this->data['bot_id'] = $bot_name_tmp['name']; if ($this->data['bot_id'] !== false) { $this->data['is_bot'] = true; bots_table_update($bot_name_tmp['id']); } } } }