ip detection. Problems =(

  • Автор темы glukerrr
  • Дата начала

glukerrr

Guest
ip detection. Problems =(

Добрый день! Почему на разных серверах код

PHP:
<?php
if ( getenv('HTTP_X_FORWARDED_FOR') != '' ) {
	$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : $REMOTE_ADDR );

	if ( preg_match("/^([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/", getenv('HTTP_X_FORWARDED_FOR'), $ip_list) ) {
		$private_ip = array('/^0\./', '/^127\.0\.0\.1/', '/^192\.168\..*/', '/^172\.16\..*/', '/^10.\.*/', '/^224.\.*/', '/^240.\.*/');
		$client_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);
	}
} else {
	$client_ip = ( !empty($HTTP_SERVER_VARS['REMOTE_ADDR']) ) ? $HTTP_SERVER_VARS['REMOTE_ADDR'] : ( ( !empty($HTTP_ENV_VARS['REMOTE_ADDR']) ) ? $HTTP_ENV_VARS['REMOTE_ADDR'] : $REMOTE_ADDR );
}

echo $client_ip;
?>
выдает разные значения. В одном случае ip юзера, в другом ip сервера =(( В чем тут проблема? В php.ini ?
 

Crazy

Developer
К примеру, если в REMOTE_ADDR постоянно торчит одно и то же значение, то это, вероятно, адрес акселератора. В этом случае получение адреса клиента, если он и сам сидит за прокси, зачастую невозможно.
 

glukerrr

Guest
Посмотрел код на http://phpclub.ru/talk/showthread.php?s=&threadid=37107&highlight=REMOTEADDR

Очень интересная штука. А не подскажите ли, уважаемые, как применить данный код к проверке анонимности прокси? Ведь тут очень близкие вещи происходят. Но в нашем случае клиентские параметры уже сформированы, а тут нам на вход дается просто хост или ip на проверку.. Надо чтоли попробывать приконнектиться к самому себе через прокси? Или что?
 

glukerrr

Guest
Originally posted by young
Вот в этом http://phpclub.ru/talk/showthread.php?s=&threadid=37107&highlight=REMOTEADDR топике я приводил рабочий код
Кстати, young, в приводимом тобою коде я не обнаружил такой переменной как X_REAL_IP. При установленном HTTP-акселлераторе она как раз помогает.. А вот в функции из phpmyadmin ее нет =((
 
Сверху