在做微信扫码支付模式二开发,使用如下方式获取到的IP地址在不同浏览器里结果不一样,这也就导致了火狐浏览器可以出结果而360浏览器不行。获取IP地址代码(这是微信支付开发里边的代码): $_SERVER['REMOTE_ADDR']
火狐浏览器结果:IP地址 :127.0.0.1360急速/安全浏览器/谷歌浏览器: IP地址 :::1
请问这个问题是微信支付示例代码里边的错误,还是我自身电脑配置的错误呢?
4 回答
大话西游666
TA贡献1817条经验 获得超14个赞
两个实际是一样的,只不过127.0.0.1
是ipv4的回环地址,::1
是ipv6的。我觉得你可以试试在网卡属性里把ipv6协议关掉,不过不保证一定有用(回环不走网卡)
森栏
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;
}
- 4 回答
- 0 关注
- 392 浏览
添加回答
举报
0/150
提交
取消