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

       

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

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

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

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

1 сообщение
 • Страница 1 из 1
Просмотры: 3232 • 
Аватара пользователя
PPK
Администратор
Сообщения: 10514
Зарегистрирован: 21 мар 2009, 17:13
Сообщение 17 май 2012, 11:06
В 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-2025 @ PPK
  • Часовой пояс: UTC+04:00
Участники темы
Список форумов Участники темы
Перейти
Сайт ↳   Новости по сайту ↳   Новости обновлений ↳   Вопросы по сайту ↳   Non-russian speakers forum phpBB 3.1-3.3 ↳   Вопросы по phpBB 3.1-3.3 ↳   Расширения для phpBB 3.1-3.3 ↳   Условно-бесплатные расширения ↳   Платные расширения ↳   Расширения для подписчиков ↳   Расширения в разработке ↳   База расширений ↳   Стили для phpBB 3.1-3.3 ↳   Переводы расширений для phpBB3.1-3.3 ↳   Поиск и запросы расширений ↳   Запросы расширений, функционала и переводов для подписчиков ppkBB3cker ↳   Новости по трекеру и обновлениям ↳   Ошибки, проблемы, недочёты ↳   Предложения по новым функциям и возможностям ↳   Вопросы, ответы и примеры решений ↳   Моды и стили для трекера ↳   Готовые стили для трекера ↳   Запросы стилей для трекера ↳   Стили в разработке ↳   Готовые моды для трекера ↳   Запросы модов для трекера ↳   Моды в разработке ↳   Остальное ↳   F.A.Q. ↳   Ваши трекеры ↳   Оффтопик xbtBB3cker ↳   Новости по трекеру и обновлениям ↳   Вопросы, ответы, ошибки и обсуждение phpBB 3.0 ↳   Другие моды для phpBB3 ↳   Минимоды и хаки для phpBB3 ↳   Вопросы по phpBB3 ↳   phpBB3 ppkBB3cker Edition ↳   Платные услуги, моды, стили ↳   BB2Spoiler/BB3Spoiler ↳   BB3Topics ↳   BB3Sape ↳   BB3UserAgentInfo