示例#1
0
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;
}
示例#2
0
 /**
  * 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']);
             }
         }
     }
 }