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

如何解决PHP在360浏览器和火狐浏览器获取到IP地址值不同的问题?

如何解决PHP在360浏览器和火狐浏览器获取到IP地址值不同的问题?

PHP
神不在的星期二 2019-03-03 18:06:11
在做微信扫码支付模式二开发,使用如下方式获取到的IP地址在不同浏览器里结果不一样,这也就导致了火狐浏览器可以出结果而360浏览器不行。获取IP地址代码(这是微信支付开发里边的代码): $_SERVER['REMOTE_ADDR'] 火狐浏览器结果:IP地址 :127.0.0.1360急速/安全浏览器/谷歌浏览器: IP地址 :::1 请问这个问题是微信支付示例代码里边的错误,还是我自身电脑配置的错误呢?
查看完整描述

4 回答

?
MM们

TA贡献1886条经验 获得超2个赞

进行一次判断不就解决了兼容的问题

if($ip=='::1'){
    $ip='127.0.0.1';
}
查看完整回答
反对 回复 2019-03-18
?
大话西游666

TA贡献1817条经验 获得超14个赞

两个实际是一样的,只不过127.0.0.1是ipv4的回环地址,::1是ipv6的。我觉得你可以试试在网卡属性里把ipv6协议关掉,不过不保证一定有用(回环不走网卡)

查看完整回答
反对 回复 2019-03-18
?
森栏

TA贡献1810条经验 获得超5个赞

因此,使用PHP获取客户端IP的代码可以如下:

function getip() {    
    $unknown = 'unknown';    
    if ( isset($_SERVER['HTTP_X_FORWARDED_FOR'])   
           && $_SERVER['HTTP_X_FORWARDED_FOR']   
           && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], $unknown)   
       ) {    
           $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];    
       } elseif ( isset($_SERVER['REMOTE_ADDR'])   
           && $_SERVER['REMOTE_ADDR'] &&   
           strcasecmp($_SERVER['REMOTE_ADDR'], $unknown) )   
       {    
           $ip = $_SERVER['REMOTE_ADDR'];    
       }    
       /**   
        * 处理多层代理的情况   
        * 或者使用正则方式:$ip = preg_match("/[\d\.] 
        * {7,15}/", $ip, $matches) ? $matches[0] : $unknown;   
        */    
       if (false !== strpos($ip, ','))    
           $ip = reset(explode(',', $ip));    
       return $ip;    
   }  
查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 392 浏览

添加回答

举报

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