php获取用户真实ip

在微信支付等场景中,调起微信支付时需要传入调用支付的用户端ip和支付用户端ip是否一致
有时候用户端会有多层代理,所以获取真实ip并不容易
但是我们不一定非要拿到用户的真正的ip地址
所以我们只需要保证,我们传入微信支付的ip和微信获取的ip一致即可
用下面这个函数即可获取用户端的ip

function get_client_ip(){
    $ip = FALSE;
    //客户端IP 或 NONE 
    if(!empty($_SERVER["HTTP_CLIENT_IP"])){
        $ip = $_SERVER["HTTP_CLIENT_IP"];
    }
    //多重代理服务器下的客户端真实IP地址(可能伪造),如果没有使用代理,此字段为空
    if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
        $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
        if ($ip) {
            array_unshift($ips, $ip);
            $ip = FALSE; 
        }
        for ($i = 0; $i < count($ips); $i++) {
            if (!eregi ("^(10│172.16│192.168).", $ips[$i])) {
                $ip = $ips[$i];
                break;
            }
        }
    }
    //客户端IP 或 (最后一个)代理服务器 IP 
    return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}
Last modification:July 9th, 2019 at 02:45 pm
If you think my article is useful to you, please feel free to appreciate

Leave a Comment

简爱博客