Магазин
Правила Ответы на вопросы Конфиденциальность
Магазин
Правила Ответы на вопросы Конфиденциальность
  • Быстрые действия Ярлыки
    Общие действия
    Связаться с администрацией
    • Бот

       

Минимоды и хаки для phpBB3

  • Список форумов
  • Форумы по phpBB 3.0
  • Другие моды для phpBB 3.0
  • Минимоды и хаки для phpBB3

Поиск пользователя по IP адресу

Небольшие моды и хаки для форума phpBB3
Правила форума
При размещении мода/статьи взятой с другого форума/сайта обязательно необходимо указывать первоисточник сообщения.

1 сообщение
 • Страница 1 из 1
Просмотры: 4896 • 
  • Аватара пользователя
    PPK Сообщение 17.05.2012
    В phpBB3 на странице списка пользователей есть ссылка на страницу поиска пользователя, где среди прочих параметров можно указать IP адрес пользователя (при этом поиск будет вестись по IP адресам сообщений с которых пользователь оставлял эти сообщения), небольшой мод, который добавляет возможность выбора области поиска по IP адресам:
    1. IP с которых пользователь оставлял сообщения
    2. IP с которого пользователь был зарегистрирован
    3. IP пользователя который сейчас находится на форуме
    4. IP пользователя с которого он посещал форум

    1. Переделать файлы:
    language/ru/memberlist.php в самом конце перед

    Код: Выделить всё

    ));
    
    ?>
    добавить

    Код: Выделить всё

    	'POST_FROM_IP' => 'оставлял сообщения',
    	'REG_FROM_IP' => 'зарегистрировался',
    	'ONLINE_FROM_IP' => 'сейчас на форуме',
    	'OFFLINE_FROM_IP' => 'посещал форум',
    /memberlist.php после

    Код: Выделить всё

    			$count			= (request_var('count', '') !== '') ? request_var('count', 0) : '';
    			$ipdomain		= request_var('ip', '');
    добавить

    Код: Выделить всё

    			$ip_select	= request_var('ip_select', 'default');
    			$find_ip = array('default'=>$user->lang['POST_FROM_IP'],  'reg'=>$user->lang['REG_FROM_IP'], 'online'=>$user->lang['ONLINE_FROM_IP'], 'offline'=>$user->lang['OFFLINE_FROM_IP']);
    			$s_find_ip = '';
    			foreach ($find_ip as $key => $value)
    			{
    				$selected = ($ip_select == $key) ? ' selected="selected"' : '';
    				$s_find_ip .= '<option value="' . $key . '"' . $selected . '>' . $value . '</option>';
    			}
    перед

    Код: Выделить всё

    					$ip_forums = array_keys($auth->acl_getf('m_info', true));
    
    					$sql = 'SELECT DISTINCT poster_id
    добавить

    Код: Выделить всё

    					if($ip_select=='default')
    					{
    после

    Код: Выделить всё

    						// A minor fudge but it does the job :D
    						$sql_where .= " AND u.user_id = 0";
    					}
    					unset($ip_forums);
    
    					$db->sql_freeresult($result);
    добавить

    Код: Выделить всё

    					}
    					else
    					{
    						switch ($ip_select)
    						{
    							case 'reg':
    								$sql_where .= " AND u.user_ip " . ((strpos($ips, '%') !== false) ? 'LIKE' : 'IN') . " ($ips)";
    							break;
    
    							case 'online':
    								$sql = 'SELECT DISTINCT session_user_id
    									FROM ' . SESSIONS_TABLE . '
    									WHERE session_ip ' . ((strpos($ips, '%') !== false) ? 'LIKE' : 'IN') . " ($ips)
    										AND session_user_id>1";
    								$result = $db->sql_query($sql);
    
    								if ($row = $db->sql_fetchrow($result))
    								{
    									$ip_sql = array();
    									do
    									{
    										$ip_sql[] = $row['session_user_id'];
    									}
    									while ($row = $db->sql_fetchrow($result));
    
    									$sql_where .= ' AND ' . $db->sql_in_set('u.user_id', $ip_sql);
    								}
    								else
    								{
    									// A minor fudge but it does the job :D
    									$sql_where .= " AND u.user_id = 0";
    								}
    								unset($ip_forums);
    
    								$db->sql_freeresult($result);
    							break;
    
    							case 'offline':
    								$sql = 'SELECT DISTINCT user_id
    									FROM ' . SESSIONS_KEYS_TABLE . '
    									WHERE last_ip ' . ((strpos($ips, '%') !== false) ? 'LIKE' : 'IN') . " ($ips)
    										AND user_id>1";
    								$result = $db->sql_query($sql);
    
    								if ($row = $db->sql_fetchrow($result))
    								{
    									$ip_sql = array();
    									do
    									{
    										$ip_sql[] = $row['user_id'];
    									}
    									while ($row = $db->sql_fetchrow($result));
    
    									$sql_where .= ' AND ' . $db->sql_in_set('u.user_id', $ip_sql);
    								}
    								else
    								{
    									// A minor fudge but it does the job :D
    									$sql_where .= " AND u.user_id = 0";
    								}
    								unset($ip_forums);
    
    								$db->sql_freeresult($result);
    							break;
    						}
    					}
    после

    Код: Выделить всё

    		// We do not use request_var() here directly to save some calls (not all variables are set)
    		$check_params = array(
    добавить

    Код: Выделить всё

    			'ip_select'	=> array('ip_select', (in_array(request_var('ip_select', 'default'), array('default', 'reg', 'online', 'offline')) ? request_var('ip_select', 'default') : 'default')),
    перед

    Код: Выделить всё

    				'USERNAME'	=> $username,
    				'EMAIL'		=> $email,
    добавить

    Код: Выделить всё

    				'S_IP_OPTIONS'		=> $s_find_ip,
    styles/prosilver/template/memberlist_search.html заменить

    Код: Выделить всё

    		<dd><input class="inputbox medium" type="text" name="ip" id="ip" value="{IP}" /></dd>
    на

    Код: Выделить всё

    		<dd><select name="ip_select">{S_IP_OPTIONS}</select> <input class="inputbox medium" type="text" name="ip" id="ip" value="{IP}" /></dd>
    styles/subsilver2/template/memberlist_search.html заменить

    Код: Выделить всё

    	<td class="row2"><input class="post" type="text" name="ip" value="{IP}" /></td>
    на

    Код: Выделить всё

    	<td class="row2"><select name="ip_select">{S_IP_OPTIONS}</select> <input class="post" type="text" name="ip" value="{IP}" /></td>
    2. Очистить кеш, обновить стили
    3. Скриншоты:
    Отображение формы поиска в стиле prosilver по умолчанию

    Отображение формы поиска в стиле prosilver после установки мода

    --
    Для пользователей ppkBB3cker - мод будет установлен в трекер в одном из следующих обновлений (с дополнительными опциями поиска по трекеру)
PPK
1 сообщение
 • Страница 1 из 1

Вернуться в «Минимоды и хаки для phpBB3»

Time: 0.000s | Queries: 0 | Peak Memory Usage: 0.00 МБ | GZIP: Unknown | SQL Explain
  • Список форумов
2018, made with by ThemeKita Создано на основе phpBB® Forum Software © phpBB Limited Русская поддержка phpBB (C) 2009-2026 @ PPK
  • Часовой пояс: UTC+04:00
Участники темы
Список форумов Участники темы
Перейти
Сайт ↳   Новости по сайту ↳   Новости обновлений ↳   Вопросы по сайту ↳   Non-russian speakers forum Форумы по phpBB 3.1-3.3 ↳   Расширения для phpBB 3.1-3.3 ↳   Бета-версии и расширения в разработке ↳   База расширений ↳   Поиск и запросы расширений ↳   Расширения для phpBB 3.1-3.3 для донаторов ↳   Условно-бесплатные расширения ↳   Платные расширения ↳   Расширения для подписчиков ↳   Запросы расширений, функционала и переводов для подписчиков ↳   Переводы расширений для phpBB3.1-3.3 ↳   Стили для phpBB 3.1-3.3 ↳   Вопросы по phpBB 3.1-3.3 Форумы по phpBB 3.0 ↳   Мод трекера ppkBB3cker ↳   Новости по трекеру и обновлениям ↳   Ошибки, проблемы, недочёты ↳   Предложения по новым функциям и возможностям ↳   Вопросы, ответы и примеры решений ↳   Моды и стили для трекера ↳   Готовые стили для трекера ↳   Запросы стилей для трекера ↳   Стили в разработке ↳   Готовые моды для трекера ↳   Запросы модов для трекера ↳   Моды в разработке ↳   Остальное ↳   Часто задаваемые вопросы ↳   Ваши трекеры ↳   Мод трекера xbtBB3cker ↳   Новости по трекеру и обновлениям ↳   Вопросы, ответы, ошибки и обсуждение ↳   Другие моды для phpBB 3.0 ↳   Минимоды и хаки для phpBB3 ↳   phpBB 3.0 ppkBB3cker Edition ↳   Платные услуги, моды, стили для phpBB 3.0 ↳   BB2Spoiler/BB3Spoiler ↳   BB3Topics ↳   BB3Sape ↳   BB3UserAgentInfo ↳   Вопросы по phpBB 3.0 ↳   Вне тематики форума