代码片段 → PHP → 获取用户 IP 地址 获取用户 IP 地址 Chris Coyier 于 2012 年 1 月 27 日 考虑代理 if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip=$_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ip=$_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip=$_SERVER['REMOTE_ADDR']; }
这对我的下一个在线目录项目非常有用。
谢谢。
非常有趣
这对我的下一个在线目录项目非常有用。
谢谢。
不错
谢谢!我找了很长时间的 PHP IP 代码了!
这里有一个更简单的方法
它更容易,但当你的用户在代理后面时,它不会提供正确的 IP 地址。
这个更完整,就像我在我的一个网站上使用的那样。
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” );
// 代理添加到此标头的末尾
// 被“隐藏”的 IP 地址。要找到实际的 IP
// 用户开始从头寻找
// 范围内的 IP 地址不是私有的。如果没有
// 找到任何,REMOTE_ADDR 的值就会被采用。
$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) )
{
// http://www.faqs.org/rfcs/rfc1918.html
$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;
}
以下错误是
Notice: Undefined index: HTTP_X_FORWARDED_FOR in get-ip-address.php on line 19
这看起来非常简单直接。
谢谢。
无法正常工作,输出为“::1” :-(
IP 地址将存储在哪里?