Вывод IP адреса пользователю

G2
На сайте с 16.02.2013
Offline
35
775

Народ, как это делается?

Нужно сделать так, чтобы пользователю показывался его же айпи адрес.

Пример: http://www.ip-ping.ru/

kxk
На сайте с 30.01.2005
Offline
990
kxk
#1

grisha2217, Секундочку, где-то у меня был класс :)

---------- Добавлено 09.10.2013 в 19:51 ----------
А, вот и класс :

function getRealIP()
{

if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
{
$client_ip =
( !empty($_SERVER['REMOTE_ADDR']) ) ?
$_SERVER['REMOTE_ADDR']
:
( ( !empty($_ENV['REMOTE_ADDR']) ) ?
$_ENV['REMOTE_ADDR']
:
"unknown" );
$entries = split('[, ]', $_SERVER['HTTP_X_FORWARDED_FOR']);

reset($entries);
while (list(, $entry) = each($entries))
{
$entry = trim($entry);
if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) )
{
$private_ip = array(
'/^0\./',
'/^127\.0\.0\.1/',
'/^192\.168\..*/',
'/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
'/^10\..*/');

$found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);

if ($client_ip != $found_ip)
{
$client_ip = $found_ip;
break;
}
}
}
}
else
{
$client_ip =
( !empty($_SERVER['REMOTE_ADDR']) ) ?
$_SERVER['REMOTE_ADDR']
:
( ( !empty($_ENV['REMOTE_ADDR']) ) ?
$_ENV['REMOTE_ADDR']
:
"unknown" );
}

return $client_ip;

}
$real_ip = getRealIP();
Ваш DEVOPS
G2
На сайте с 16.02.2013
Offline
35
#2
kxk:
grisha2217, Секундочку, где-то у меня был класс :)

---------- Добавлено 09.10.2013 в 19:51 ----------
А, вот и класс :

function getRealIP()

{

if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
{
$client_ip =
( !empty($_SERVER['REMOTE_ADDR']) ) ?
$_SERVER['REMOTE_ADDR']
:
( ( !empty($_ENV['REMOTE_ADDR']) ) ?
$_ENV['REMOTE_ADDR']
:
"unknown" );
$entries = split('[, ]', $_SERVER['HTTP_X_FORWARDED_FOR']);

reset($entries);
while (list(, $entry) = each($entries))
{
$entry = trim($entry);
if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", $entry, $ip_list) )
{
$private_ip = array(
'/^0\./',
'/^127\.0\.0\.1/',
'/^192\.168\..*/',
'/^172\.((1[6-9])|(2[0-9])|(3[0-1]))\..*/',
'/^10\..*/');

$found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);

if ($client_ip != $found_ip)
{
$client_ip = $found_ip;
break;
}
}
}
}
else
{
$client_ip =
( !empty($_SERVER['REMOTE_ADDR']) ) ?
$_SERVER['REMOTE_ADDR']
:
( ( !empty($_ENV['REMOTE_ADDR']) ) ?
$_ENV['REMOTE_ADDR']
:
"unknown" );
}

return $client_ip;

}

Спасибо, а как теперь это вставить в страницу? У меня vBulletin.

Пробовал и так и сяк. Даже через include не получается

IL
На сайте с 20.04.2007
Offline
435
#3
grisha2217:
Спасибо, а как теперь это вставить в страницу? У меня vBulletin.

Это в страницу лучше не вставлять...

kxk, вставил бы с тэгом CODE без php, а то форум [скобки] и некоторые символы в ***кракозябры превращает..

Хотя можно не дожидаться, погуглить самостоятельно и найти аналогичные решения.. http://stackoverflow.com/questions/13646690/how-to-get-real-ip-from-visitor

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
Z
На сайте с 17.09.2010
Offline
34
#4

grisha2217, потому что никакие классы функции и т.д. не нужны, есть одна простая строчка:

echo $_SERVER['REMOTE_ADDR'];

Остальной информации из X_FORWARDED_FOR, X_REAL_IP, VIA или еще что там есть, доверять вообще не стоит...

G2
На сайте с 16.02.2013
Offline
35
#5
zerocube:
grisha2217, потому что никакие классы функции и т.д. не нужны, есть одна простая строчка:

echo $_SERVER['REMOTE_ADDR'];

Остальной информации из X_FORWARDED_FOR, X_REAL_IP, VIA или еще что там есть, доверять вообще не стоит...

О заработало. Я вставил это в модуль, а модуль в нужный объект, но получилось так, что отображается в самом верху( в начале <body>, а не там где положено.

SeVlad
На сайте с 03.11.2008
Offline
1609
#6
grisha2217:
отображается в самом верху( в начале <body>, а не там где положено.

Минуточку, ща мы решим этот бином ньютона...

Эврика!!! "Это" надо вставлять туда, где оно должны выводится.

Делаю хорошие сайты хорошим людям. Предпочтение коммерческим направлениям. Связь со мной через http://wp.me/P3YHjQ-3.
G2
На сайте с 16.02.2013
Offline
35
#7
SeVlad:
Минуточку, ща мы решим этот бином ньютона...

Эврика!!! "Это" надо вставлять туда, где оно должны выводится.

я не такой глупый, как вы подумали.

$real_ip = $_SERVER['REMOTE_ADDR'];

vB_Template::preRegister('navbar',array('real_ip' => $real_ip));
return true;

{vb:raw real_ip} в нужный шаблон

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий