Вычисление IP через PHP

12
ВЖ
На сайте с 20.11.2007
Offline
91
#11
Anarchist:
Владислав Железный, ну тогда уж в случае false тоже "unknown" возвращать...

А смысл? Как проще написать так:


if($ip = getip()) { echo $ip; } else { echo 'I don\'t know'; }

или так


if(($ip = getip()) !== 'unknown') { echo $ip; } else { echo 'I don\'t know'; }

Хотя тут дело привычки. Кто-то код пишет на десять страниц, а кто-то умещает то же самое на одной, причем гораздо быстрее. :)

AP
На сайте с 18.05.2008
Offline
25
#12

Ммм не помню откуда, но вот:

function getIp() {

global $REMOTE_ADDR;

global $HTTP_X_FORWARDED_FOR, $HTTP_X_FORWARDED, $HTTP_FORWARDED_FOR, $HTTP_FORWARDED;

global $HTTP_VIA, $HTTP_X_COMING_FROM, $HTTP_COMING_FROM;

// Get some server/environment variables values

if (empty($REMOTE_ADDR)) {

if (!empty($_SERVER) && isset($_SERVER['REMOTE_ADDR'])) {

$REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];

}

else if (!empty($_ENV) && isset($_ENV['REMOTE_ADDR'])) {

$REMOTE_ADDR = $_ENV['REMOTE_ADDR'];

}

else if (@getenv('REMOTE_ADDR')) {

$REMOTE_ADDR = getenv('REMOTE_ADDR');

}

}

if (empty($HTTP_X_FORWARDED_FOR)) {

if (!empty($_SERVER) && isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {

$HTTP_X_FORWARDED_FOR = $_SERVER['HTTP_X_FORWARDED_FOR'];

}

else if (!empty($_ENV) && isset($_ENV['HTTP_X_FORWARDED_FOR'])) {

$HTTP_X_FORWARDED_FOR = $_ENV['HTTP_X_FORWARDED_FOR'];

}

else if (@getenv('HTTP_X_FORWARDED_FOR')) {

$HTTP_X_FORWARDED_FOR = getenv('HTTP_X_FORWARDED_FOR');

}

}

if (empty($HTTP_X_FORWARDED)) {

if (!empty($_SERVER) && isset($_SERVER['HTTP_X_FORWARDED'])) {

$HTTP_X_FORWARDED = $_SERVER['HTTP_X_FORWARDED'];

}

else if (!empty($_ENV) && isset($_ENV['HTTP_X_FORWARDED'])) {

$HTTP_X_FORWARDED = $_ENV['HTTP_X_FORWARDED'];

}

else if (@getenv('HTTP_X_FORWARDED')) {

$HTTP_X_FORWARDED = getenv('HTTP_X_FORWARDED');

}

}

if (empty($HTTP_FORWARDED_FOR)) {

if (!empty($_SERVER) && isset($_SERVER['HTTP_FORWARDED_FOR'])) {

$HTTP_FORWARDED_FOR = $_SERVER['HTTP_FORWARDED_FOR'];

}

else if (!empty($_ENV) && isset($_ENV['HTTP_FORWARDED_FOR'])) {

$HTTP_FORWARDED_FOR = $_ENV['HTTP_FORWARDED_FOR'];

}

else if (@getenv('HTTP_FORWARDED_FOR')) {

$HTTP_FORWARDED_FOR = getenv('HTTP_FORWARDED_FOR');

}

}

if (empty($HTTP_FORWARDED)) {

if (!empty($_SERVER) && isset($_SERVER['HTTP_FORWARDED'])) {

$HTTP_FORWARDED = $_SERVER['HTTP_FORWARDED'];

}

else if (!empty($_ENV) && isset($_ENV['HTTP_FORWARDED'])) {

$HTTP_FORWARDED = $_ENV['HTTP_FORWARDED'];

}

else if (@getenv('HTTP_FORWARDED')) {

$HTTP_FORWARDED = getenv('HTTP_FORWARDED');

}

}

if (empty($HTTP_VIA)) {

if (!empty($_SERVER) && isset($_SERVER['HTTP_VIA'])) {

$HTTP_VIA = $_SERVER['HTTP_VIA'];

}

else if (!empty($_ENV) && isset($_ENV['HTTP_VIA'])) {

$HTTP_VIA = $_ENV['HTTP_VIA'];

}

else if (@getenv('HTTP_VIA')) {

$HTTP_VIA = getenv('HTTP_VIA');

}

}

if (empty($HTTP_X_COMING_FROM)) {

if (!empty($_SERVER) && isset($_SERVER['HTTP_X_COMING_FROM'])) {

$HTTP_X_COMING_FROM = $_SERVER['HTTP_X_COMING_FROM'];

}

else if (!empty($_ENV) && isset($_ENV['HTTP_X_COMING_FROM'])) {

$HTTP_X_COMING_FROM = $_ENV['HTTP_X_COMING_FROM'];

}

else if (@getenv('HTTP_X_COMING_FROM')) {

$HTTP_X_COMING_FROM = getenv('HTTP_X_COMING_FROM');

}

}

if (empty($HTTP_COMING_FROM)) {

if (!empty($_SERVER) && isset($_SERVER['HTTP_COMING_FROM'])) {

$HTTP_COMING_FROM = $_SERVER['HTTP_COMING_FROM'];

}

else if (!empty($_ENV) && isset($_ENV['HTTP_COMING_FROM'])) {

$HTTP_COMING_FROM = $_ENV['HTTP_COMING_FROM'];

}

else if (@getenv('HTTP_COMING_FROM')) {

$HTTP_COMING_FROM = getenv('HTTP_COMING_FROM');

}

}

// Gets the default ip sent by the user

if (!empty($REMOTE_ADDR)) {

$direct_ip = $REMOTE_ADDR;

}

// Gets the proxy ip sent by the user

$proxy_ip = '';

if (!empty($HTTP_X_FORWARDED_FOR)) {

$proxy_ip = $HTTP_X_FORWARDED_FOR;

} else if (!empty($HTTP_X_FORWARDED)) {

$proxy_ip = $HTTP_X_FORWARDED;

} else if (!empty($HTTP_FORWARDED_FOR)) {

$proxy_ip = $HTTP_FORWARDED_FOR;

} else if (!empty($HTTP_FORWARDED)) {

$proxy_ip = $HTTP_FORWARDED;

} else if (!empty($HTTP_VIA)) {

$proxy_ip = $HTTP_VIA;

} else if (!empty($HTTP_X_COMING_FROM)) {

$proxy_ip = $HTTP_X_COMING_FROM;

} else if (!empty($HTTP_COMING_FROM)) {

$proxy_ip = $HTTP_COMING_FROM;

}

// Returns the true IP if it has been found, else FALSE

if (empty($proxy_ip)) {

// True IP without proxy

return $direct_ip;

} else {

$is_ip = preg_match('|^([0-9]{1,3}\.){3,3}[0-9]{1,3}|', $proxy_ip, $regs);

if ($is_ip && (count($regs) > 0)) {

// True IP behind a proxy

return $regs[0];

} else {

// Can't define IP: there is a proxy but we don't have

// information about the true IP

return FALSE;

}

}

};

[Создание скриптов и сайтов на заказ] PHP/XML/MySQL/JavaScript/AJAX/ООП/Smarty/etc ICQ 950-954
zhidronsss
На сайте с 12.10.2007
Offline
36
#13

ArtPetrov, спасибо!

deepslam
На сайте с 09.05.2006
Offline
204
#14

Это из PHPMyAdmin , я тоже пользуюсь ей :-)

Вот с тэгами она же :


function getIp()
{
global $REMOTE_ADDR;
global $HTTP_X_FORWARDED_FOR, $HTTP_X_FORWARDED, $HTTP_FORWARDED_FOR, $HTTP_FORWARDED;
global $HTTP_VIA, $HTTP_X_COMING_FROM, $HTTP_COMING_FROM;
global $HTTP_SERVER_VARS, $HTTP_ENV_VARS;
// Get some server/environment variables values
if (empty($REMOTE_ADDR)) {
if (!empty($_SERVER) && isset($_SERVER['REMOTE_ADDR'])) {
$REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
}
else if (!empty($_ENV) && isset($_ENV['REMOTE_ADDR'])) {
$REMOTE_ADDR = $_ENV['REMOTE_ADDR'];
}
else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['REMOTE_ADDR'])) {
$REMOTE_ADDR = $HTTP_SERVER_VARS['REMOTE_ADDR'];
}
else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['REMOTE_ADDR'])) {
$REMOTE_ADDR = $HTTP_ENV_VARS['REMOTE_ADDR'];
}
else if (@getenv('REMOTE_ADDR')) {
$REMOTE_ADDR = getenv('REMOTE_ADDR');
}
} // end if
if (empty($HTTP_X_FORWARDED_FOR)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$HTTP_X_FORWARDED_FOR = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_X_FORWARDED_FOR'])) {
$HTTP_X_FORWARDED_FOR = $_ENV['HTTP_X_FORWARDED_FOR'];
}
else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'])) {
$HTTP_X_FORWARDED_FOR = $HTTP_SERVER_VARS['HTTP_X_FORWARDED_FOR'];
}
else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_X_FORWARDED_FOR'])) {
$HTTP_X_FORWARDED_FOR = $HTTP_ENV_VARS['HTTP_X_FORWARDED_FOR'];
}
else if (@getenv('HTTP_X_FORWARDED_FOR')) {
$HTTP_X_FORWARDED_FOR = getenv('HTTP_X_FORWARDED_FOR');
}
} // end if
if (empty($HTTP_X_FORWARDED)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_X_FORWARDED'])) {
$HTTP_X_FORWARDED = $_SERVER['HTTP_X_FORWARDED'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_X_FORWARDED'])) {
$HTTP_X_FORWARDED = $_ENV['HTTP_X_FORWARDED'];
}
else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_X_FORWARDED'])) {
$HTTP_X_FORWARDED = $HTTP_SERVER_VARS['HTTP_X_FORWARDED'];
}
else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_X_FORWARDED'])) {
$HTTP_X_FORWARDED = $HTTP_ENV_VARS['HTTP_X_FORWARDED'];
}
else if (@getenv('HTTP_X_FORWARDED')) {
$HTTP_X_FORWARDED = getenv('HTTP_X_FORWARDED');
}
} // end if
if (empty($HTTP_FORWARDED_FOR)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_FORWARDED_FOR'])) {
$HTTP_FORWARDED_FOR = $_SERVER['HTTP_FORWARDED_FOR'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_FORWARDED_FOR'])) {
$HTTP_FORWARDED_FOR = $_ENV['HTTP_FORWARDED_FOR'];
}
else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_FORWARDED_FOR'])) {
$HTTP_FORWARDED_FOR = $HTTP_SERVER_VARS['HTTP_FORWARDED_FOR'];
}
else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_FORWARDED_FOR'])) {
$HTTP_FORWARDED_FOR = $HTTP_ENV_VARS['HTTP_FORWARDED_FOR'];
}
else if (@getenv('HTTP_FORWARDED_FOR')) {
$HTTP_FORWARDED_FOR = getenv('HTTP_FORWARDED_FOR');
}
} // end if
if (empty($HTTP_FORWARDED)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_FORWARDED'])) {
$HTTP_FORWARDED = $_SERVER['HTTP_FORWARDED'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_FORWARDED'])) {
$HTTP_FORWARDED = $_ENV['HTTP_FORWARDED'];
}
else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_FORWARDED'])) {
$HTTP_FORWARDED = $HTTP_SERVER_VARS['HTTP_FORWARDED'];
}
else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_FORWARDED'])) {
$HTTP_FORWARDED = $HTTP_ENV_VARS['HTTP_FORWARDED'];
}
else if (@getenv('HTTP_FORWARDED')) {
$HTTP_FORWARDED = getenv('HTTP_FORWARDED');
}
} // end if
if (empty($HTTP_VIA)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_VIA'])) {
$HTTP_VIA = $_SERVER['HTTP_VIA'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_VIA'])) {
$HTTP_VIA = $_ENV['HTTP_VIA'];
}
else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_VIA'])) {
$HTTP_VIA = $HTTP_SERVER_VARS['HTTP_VIA'];
}
else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_VIA'])) {
$HTTP_VIA = $HTTP_ENV_VARS['HTTP_VIA'];
}
else if (@getenv('HTTP_VIA')) {
$HTTP_VIA = getenv('HTTP_VIA');
}
} // end if
if (empty($HTTP_X_COMING_FROM)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_X_COMING_FROM'])) {
$HTTP_X_COMING_FROM = $_SERVER['HTTP_X_COMING_FROM'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_X_COMING_FROM'])) {
$HTTP_X_COMING_FROM = $_ENV['HTTP_X_COMING_FROM'];
}
else if (!empty($HTTP_SERVER_VARS) && isset($HTTP_SERVER_VARS['HTTP_X_COMING_FROM'])) {
$HTTP_X_COMING_FROM = $HTTP_SERVER_VARS['HTTP_X_COMING_FROM'];
}
else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_X_COMING_FROM'])) {
$HTTP_X_COMING_FROM = $HTTP_ENV_VARS['HTTP_X_COMING_FROM'];
}
else if (@getenv('HTTP_X_COMING_FROM')) {
$HTTP_X_COMING_FROM = getenv('HTTP_X_COMING_FROM');
}
} // end if
if (empty($HTTP_COMING_FROM)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_COMING_FROM'])) {
$HTTP_COMING_FROM = $_SERVER['HTTP_COMING_FROM'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_COMING_FROM'])) {
$HTTP_COMING_FROM = $_ENV['HTTP_COMING_FROM'];
}
else if (!empty($HTTP_COMING_FROM) && isset($HTTP_SERVER_VARS['HTTP_COMING_FROM'])) {
$HTTP_COMING_FROM = $HTTP_SERVER_VARS['HTTP_COMING_FROM'];
}
else if (!empty($HTTP_ENV_VARS) && isset($HTTP_ENV_VARS['HTTP_COMING_FROM'])) {
$HTTP_COMING_FROM = $HTTP_ENV_VARS['HTTP_COMING_FROM'];
}
else if (@getenv('HTTP_COMING_FROM')) {
$HTTP_COMING_FROM = getenv('HTTP_COMING_FROM');
}
} // end if

// Gets the default ip sent by the user
if (!empty($REMOTE_ADDR)) {
$direct_ip = $REMOTE_ADDR;
}

// Gets the proxy ip sent by the user
$proxy_ip = '';
if (!empty($HTTP_X_FORWARDED_FOR)) {
$proxy_ip = $HTTP_X_FORWARDED_FOR;
} else if (!empty($HTTP_X_FORWARDED)) {
$proxy_ip = $HTTP_X_FORWARDED;
} else if (!empty($HTTP_FORWARDED_FOR)) {
$proxy_ip = $HTTP_FORWARDED_FOR;
} else if (!empty($HTTP_FORWARDED)) {
$proxy_ip = $HTTP_FORWARDED;
} else if (!empty($HTTP_VIA)) {
$proxy_ip = $HTTP_VIA;
} else if (!empty($HTTP_X_COMING_FROM)) {
$proxy_ip = $HTTP_X_COMING_FROM;
} else if (!empty($HTTP_COMING_FROM)) {
$proxy_ip = $HTTP_COMING_FROM;
} // end if... else if...
// Returns the true IP if it has been found, else FALSE
if (empty($proxy_ip)) {
// True IP without proxy
return $direct_ip;
} else {
$is_ip = ereg('^([0-9]{1,3}\.){3,3}[0-9]{1,3}', $proxy_ip, $regs);
if ($is_ip && (count($regs) > 0)) {
// True IP behind a proxy
return $regs[0];
} else {
// Can't define IP: there is a proxy but we don't have
// information about the true IP
return FALSE;
}
} // end if... else...
}
Удаление вирусов на сайте (http://www.virusonsite.ru) | Scripto CMS - бесплатная система управления сайтом (http://www.scripto-cms.ru) |Профессиональный скрипт каталога ссылок , статей, фирм и объявлений! (http://www.scripto.ru) | Уникальный скрипт для публикации контента (http://publisher.scripto.ru)
12

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