請問下,用PHP獲取瀏覽當(dāng)前用戶的IP地址,用什么方法啊?我查了一下,都說是用$_SERVER['REMOTE_ADDR'],但是這個獲取的結(jié)果并不是公網(wǎng)IP呀.
4 回答

桃花長相依
TA貢獻1860條經(jīng)驗 獲得超8個贊
public function ip($type = 0, $adv = true)
{
$type = $type ? 1 : 0;
static $ip = null;
if (null !== $ip) {
return $ip[$type];
}
if ($adv) {
if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$arr = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);
$pos = array_search('unknown', $arr);
if (false !== $pos) {
unset($arr[$pos]);
}
$ip = trim(current($arr));
} elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
} elseif (isset($_SERVER['REMOTE_ADDR'])) {
$ip = $_SERVER['REMOTE_ADDR'];
}
// IP地址合法驗證
$long = sprintf("%u", ip2long($ip));
$ip = $long ? [$ip, $long] : ['0.0.0.0', 0];
return $ip[$type];
}
直接拿去用

HUX布斯
TA貢獻1876條經(jīng)驗 獲得超6個贊
依次檢測以下請求頭,如果有值就返回
- REMOTE_ADDR
- X-FORWARDED-FOR
- X-REAL-IP
- HTTP_CLIENT_IP
- 4 回答
- 0 關(guān)注
- 984 瀏覽
添加回答
舉報
0/150
提交
取消