在做微信扫码支付模式二开发,使用如下方式获取到的IP地址在不同浏览器里结果不一样,这也就导致了火狐浏览器可以出结果而360浏览器不行。
获取IP地址代码(这是微信支付开发里边的代码): $_SERVER['REMOTE_ADDR']
火狐浏览器结果:IP地址 :127.0.0.1
360急速/安全浏览器/谷歌浏览器: IP地址 :::1
请问这个问题是微信支付示例代码里边的错误,还是我自身电脑配置的错误呢?
在做微信扫码支付模式二开发,使用如下方式获取到的IP地址在不同浏览器里结果不一样,这也就导致了火狐浏览器可以出结果而360浏览器不行。
获取IP地址代码(这是微信支付开发里边的代码): $_SERVER['REMOTE_ADDR']
火狐浏览器结果:IP地址 :127.0.0.1
360急速/安全浏览器/谷歌浏览器: IP地址 :::1
请问这个问题是微信支付示例代码里边的错误,还是我自身电脑配置的错误呢?
因此,使用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;
}
2 回答1.4k 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
2 回答827 阅读✓ 已解决
1 回答1k 阅读✓ 已解决
2 回答890 阅读
1 回答878 阅读
1 回答807 阅读
这个是因为win10默认解析成IPV6地址,实际放在线上没问题。我把$_SERVER['REMOTE_ADDR] 转换了一下,替换成127.0.0.1.另外就是使用127.0.0.1访问的话,是没问题的