为了账号安全,请及时绑定邮箱和手机立即绑定

请问下,用PHP获取浏览当前用户的公网IP地址,用什么方法啊?

请问下,用PHP获取浏览当前用户的公网IP地址,用什么方法啊?

PHP
qq_遁去的一_1 2019-03-13 00:26:11
请问下,用PHP获取浏览当前用户的IP地址,用什么方法啊?我查了一下,都说是用$_SERVER['REMOTE_ADDR'],但是这个获取的结果并不是公网IP呀.
查看完整描述

4 回答

?
桃花长相依

TA贡献1860条经验 获得超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];
}

直接拿去用

查看完整回答
反对 回复 2019-03-18
?
HUX布斯

TA贡献1876条经验 获得超6个赞

依次检测以下请求头,如果有值就返回

  1. REMOTE_ADDR
  2. X-FORWARDED-FOR
  3. X-REAL-IP
  4. HTTP_CLIENT_IP
查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 952 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信