Не отображается информация об IP-адресе

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!
С 1 января 2017 года phpBB Group прекращает поддержку phpBB версии 3.0.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.0 до 1 июля 2017 года.
Подробнее: Окончание поддержки phpBB 3.0.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
athlant64
phpBB 1.0.0
Сообщения: 4
Стаж: 14 лет 6 месяцев
Благодарил (а): 2 раза

Не отображается информация об IP-адресе

Сообщение athlant64 »

Здравствуйте.
После того как хостер обновил оборудование и перенес наш форум на новый сервер перестала отображаться информация об ip-адресе.
Ip_info.jpg
Что необходимо сделать чтобы эта функция вновь заработала?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
athlant64
phpBB 1.0.0
Сообщения: 4
Стаж: 14 лет 6 месяцев
Благодарил (а): 2 раза

Re: Не отображается информация об IP-адресе

Сообщение athlant64 »

Версия phpBB 3.0.10
Аватара пользователя
Djeday
phpBB 2.0.7a
Сообщения: 644
Стаж: 14 лет 8 месяцев
Благодарил (а): 108 раз
Поблагодарили: 68 раз

Re: Не отображается информация об IP-адресе

Сообщение Djeday »

Добрый день. После обновления форума до 3.0.11 перестала отображаться информация об IP адресе. Аналогично, как на скрине выше (пусто). С чем это может быть связано? Спасибо.
Я смею то, что можно человеку, кто смеет меньше - тот не человек.
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 13 лет 9 месяцев
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Re: Не отображается информация об IP-адресе

Сообщение c61 »

В phpBB используется запрос к whois.arin.net (ipv4) или whois.sixxs.net (ipv6) по 43 порту через socket connection. Так что причины могут быть самые разнообразные... Можно выдрать из functions_user.php функцию user_ipwhois и сделать тестик.
Аватара пользователя
Djeday
phpBB 2.0.7a
Сообщения: 644
Стаж: 14 лет 8 месяцев
Благодарил (а): 108 раз
Поблагодарили: 68 раз

Re: Не отображается информация об IP-адресе

Сообщение Djeday »

А если поподробнее?
Просто с таким не сталкивался еще.
Инфа о IP и хосте вообще не отображается... Пустота.
За вывод данной инфы отвечает functions_user.php? Просто заменял на чистый файл и ничего.
Я смею то, что можно человеку, кто смеет меньше - тот не человек.
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 13 лет 9 месяцев
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Re: Не отображается информация об IP-адресе

Сообщение c61 »

Легко. Берете вот такой скрипт:

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

<?php

$ip = "87.250.251.3";
echo "test ip=$ip<br /><br />";

$ipwhois = user_ipwhois($ip);

echo empty($ipwhois) ? "no results" : $ipwhois;

function user_ipwhois($ip)
{
	if (empty($ip))
	{
		echo "empty url<br />";
		return '';
	}

	if (preg_match(get_preg_expression('ipv4'), $ip))
	{
		// IPv4 address
		$whois_host = 'whois.arin.net.';
	}
	else if (preg_match(get_preg_expression('ipv6'), $ip))
	{
		// IPv6 address
		$whois_host = 'whois.sixxs.net.';
	}
	else
	{
		echo "error in ip<br />";
		return '';
	}

	$ipwhois = '';

	if (($fsk = @fsockopen($whois_host, 43)))
	{
		// CRLF as per RFC3912
		fputs($fsk, "$ip\r\n");
		while (!feof($fsk))
		{
			$ipwhois .= fgets($fsk, 1024);
		}
		@fclose($fsk);
	} else
	{
		echo "error fsockopen<br />";
	}

	$match = array();

	// Test for referrals from $whois_host to other whois databases, roll on rwhois
	if (!preg_match('#ReferralServer: whois://(.+)#im', $ipwhois, $match))
	{
		echo "ReferralServer: whois: match not found<br />";
	} else
	{
		if (strpos($match[1], ':') !== false)
		{
			$pos	= strrpos($match[1], ':');
			$server	= substr($match[1], 0, $pos);
			$port	= (int) substr($match[1], $pos + 1);
			unset($pos);
		}
		else
		{
			$server	= $match[1];
			$port	= 43;
		}

		$buffer = '';

		if (($fsk = @fsockopen($server, $port)))
		{
			fputs($fsk, "$ip\r\n");
			while (!feof($fsk))
			{
				$buffer .= fgets($fsk, 1024);
			}
			@fclose($fsk);
		}

		// Use the result from $whois_host if we don't get any result here
		$ipwhois = (empty($buffer)) ? $ipwhois : $buffer;
	}

	$ipwhois = htmlspecialchars($ipwhois);

	// Magic URL ;)
//	return trim(make_clickable($ipwhois, false, ''));
	return str_replace(array("\n"),"<br />",$ipwhois);
}

function get_preg_expression($mode)
{
	switch ($mode)
	{
		case 'email':
			// Regex written by James Watts and Francisco Jose Martin Moreno
			// http://fightingforalostcause.net/misc/2006/compare-email-regex.php
			return '([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*(?:[\w\!\#$\%\'\*\+\-\/\=\?\^\`{\|\}\~]|&)+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,63})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)';
		break;

		case 'bbcode_htm':
			return array(
				'#<!\-\- e \-\-><a href="mailto:(.*?)">.*?</a><!\-\- e \-\->#',
				'#<!\-\- l \-\-><a (?:class="[\w-]+" )?href="(.*?)(?:(&|\?)sid=[0-9a-f]{32})?">.*?</a><!\-\- l \-\->#',
				'#<!\-\- ([mw]) \-\-><a (?:class="[\w-]+" )?href="(.*?)">.*?</a><!\-\- \1 \-\->#',
				'#<!\-\- s(.*?) \-\-><img src="\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#',
				'#<!\-\- .*? \-\->#s',
				'#<.*?>#s',
			);
		break;

		// Whoa these look impressive!
		// The code to generate the following two regular expressions which match valid IPv4/IPv6 addresses
		// can be found in the develop directory
		case 'ipv4':
			return '#^(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$#';
		break;

		case 'ipv6':
			return '#^(?:(?:(?:[\dA-F]{1,4}:){6}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:::(?:[\dA-F]{1,4}:){0,5}(?:[\dA-F]{1,4}(?::[\dA-F]{1,4})?|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:):(?:[\dA-F]{1,4}:){4}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,2}:(?:[\dA-F]{1,4}:){3}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,3}:(?:[\dA-F]{1,4}:){2}(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,4}:(?:[\dA-F]{1,4}:)(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,5}:(?:[\dA-F]{1,4}:[\dA-F]{1,4}|(?:(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.){3}(?:\d{1,2}|1\d\d|2[0-4]\d|25[0-5])))|(?:(?:[\dA-F]{1,4}:){1,6}:[\dA-F]{1,4})|(?:(?:[\dA-F]{1,4}:){1,7}:)|(?:::))$#i';
		break;

		case 'url':
		case 'url_inline':
			$inline = ($mode == 'url') ? ')' : '';
			$scheme = ($mode == 'url') ? '[a-z\d+\-.]' : '[a-z\d+]'; // avoid automatic parsing of "word" in "last word.http://..."
			// generated with regex generation file in the develop folder
			// rus links patch
			return "[a-z]$scheme*:/{2}(?:(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})+|[0-9.]+|\[[\pLa-z0-9.]+:[\pLa-z0-9.]+:[\pLa-z0-9.:]+\])(?::\d*)?(?:/(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
			//
		break;

		case 'www_url':
		case 'www_url_inline':
			$inline = ($mode == 'www_url') ? ')' : '';
			// rus links patch
			return "www\.(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})+(?::\d*)?(?:/(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
			//
		break;

		case 'relative_url':
		case 'relative_url_inline':
			$inline = ($mode == 'relative_url') ? ')' : '';
			// rus links patch
			return "(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*(?:/(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@|]+|%[\dA-F]{2})*)*(?:\?(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?(?:\#(?:[\pLa-z0-9\-._~!$&'($inline*+,;=:@/?|]+|%[\dA-F]{2})*)?";
			//
		break;

		case 'table_prefix':
			return '#^[a-zA-Z][a-zA-Z0-9_]*$#';
		break;
	}

	return '';
}
?>
Обзываете его как-то (например, test.php). Копируете в корень к себе. В браузере набираете http://mysite.ru/test.php (mysite.ru - ваш сайт). В скрипте - $ip от яндекса. Если выдаются сообщения об ошибках - смотрите, на чём, я там немного echo понаставил. Если ничего не выдается - втыкаете ещё диагностики. Если все выдается и нет ошибок - подставляете ip какого-то пользователя, что не определялся, и снова проверяете.
Аватара пользователя
Djeday
phpBB 2.0.7a
Сообщения: 644
Стаж: 14 лет 8 месяцев
Благодарил (а): 108 раз
Поблагодарили: 68 раз

Re: Не отображается информация об IP-адресе

Сообщение Djeday »

c61, запустил тест.
Результат:

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

test ip=87.250.251.3

error fsockopen
ReferralServer: whois: match not found
no results
Что дальше?
Я смею то, что можно человеку, кто смеет меньше - тот не человек.
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 13 лет 9 месяцев
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Re: Не отображается информация об IP-адресе

Сообщение c61 »

См. руководство по php:

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

resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
Добавьте параметры fsockopen, чтоб вызов выглядел так:

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

	if (($fsk = @fsockopen($whois_host, 43, &$err_n, &$err_text)))
и в

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

		echo "error fsockopen<br />";
добавьте $err_n и $err_text примерно так:

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

		echo "error fsockopen ($err_n) $err_text<br />";
затем посмотрите код и текст ошибки.
Аватара пользователя
Djeday
phpBB 2.0.7a
Сообщения: 644
Стаж: 14 лет 8 месяцев
Благодарил (а): 108 раз
Поблагодарили: 68 раз

Re: Не отображается информация об IP-адресе

Сообщение Djeday »

А это

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

resource fsockopen ( string $hostname [, int $port = -1 [, int &$errno [, string &$errstr [, float $timeout = ini_get("default_socket_timeout") ]]]] )
нужно добавить? В начало функции?
Я смею то, что можно человеку, кто смеет меньше - тот не человек.
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 13 лет 9 месяцев
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Re: Не отображается информация об IP-адресе

Сообщение c61 »

Djeday писал(а):нужно добавить? В начало функции?
Нет, это просто строчка из руководства для иллюстрации наших действий: третий параметр - код ошибки, четвертый - текстовая расшифровка. Мы их получим и выдадим на экран. После чего станет всё ясно. Или совсем не ясно)) Во всяком случае, теперь точно известно: fsockopen завершается с ошибкой, осталось узнать: с какой именно.
Аватара пользователя
Djeday
phpBB 2.0.7a
Сообщения: 644
Стаж: 14 лет 8 месяцев
Благодарил (а): 108 раз
Поблагодарили: 68 раз

Re: Не отображается информация об IP-адресе

Сообщение Djeday »

c61, я добавил. теперь выдает такое:

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

Warning: Call-time pass-by-reference has been deprecated in /forum/test.php on line 13 Warning: Call-time pass-by-reference has been deprecated in /forum/test.php on line 13 test ip=...

error fsockopen (0) php_network_getaddresses: getaddrinfo failed: Name or service not known
ReferralServer: whois: match not found
no results
Блин, попробовал протестить на своем основном форуме - все показывает и работает...
Я смею то, что можно человеку, кто смеет меньше - тот не человек.
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 13 лет 9 месяцев
Благодарил (а): 42 раза
Поблагодарили: 251 раз

Re: Не отображается информация об IP-адресе

Сообщение c61 »

К хостеру. Проблемы с DNS. Погуглив строку "php_network_getaddresses: getaddrinfo failed: Name or service not known", можно легко найти типа такого:
This issue is typically caused by the Apache/PHP host unable to contact the DNS server.

The first thing to check is to see if you can ping the remote host using console.

If no, then your primary name server on /etc/resolv.conf (Debian) is not working. Find a working DNS and restart Apache.
If yes, then Apache is still connecting to the broken DNS server. You should try restarting Apache to see if it refreshes the DNS server listing in /etc/resolv.conf.
Аватара пользователя
miba
phpBB 2.0.4
Сообщения: 432
Стаж: 19 лет 8 месяцев
Благодарил (а): 86 раз
Поблагодарили: 7 раз

Re: Не отображается информация об IP-адресе

Сообщение miba »

извиняйте за оффтоп: не могу найти.
помнится на 2-ке был такой мод - кнопка над каждым сообщением - узнать ip адрес юзера поста.
есть-ли что-то подобное на 3-ке? а то модеры уже не первый раз просят, вернуть как было.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Не отображается информация об IP-адресе

Сообщение Татьяна5 »

Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: Не отображается информация об IP-адресе

Сообщение Pazh »

miba штатная функция движка - нажимаешь на вопросик в каждом посте (Информация о сообщении) и смотришь там на поле "IP-адрес для сообщения:"
Помощь в ЛС/email только за WM или ЮMoney

Вернуться в «Поддержка phpBB 3.0.х»