繁体   English   中英

Apache mod_geoip - 如果国家/大陆未知,$ _SERVER ['GEOIP_COUNTRY_CODE'] / $ _SERVER ['GEOIP_CONTINENT_CODE']会有什么相同的?

[英]Apache mod_geoip - What will $_SERVER['GEOIP_COUNTRY_CODE'] / $_SERVER['GEOIP_CONTINENT_CODE'] equal if country / continent is unknown?

我们使用apach mod_geoip和php的geoip.so模块来检测用户正在访问的国家/地区。

最初我们只使用PHP,但几个月前我们开始在我们的apache配置中使用geoip数据,所以现在我们使用两者。

这是多余的。

我们正在考虑禁用php的geoip.so,因为我们已经在$ _SERVER ['GEOIP_COUNTRY_CODE'] / $ _SERVER ['GEOIP_CONTINENT_CODE']中公开了country / continent。

在我们这样做之前,我们需要知道这些2将等于IF geoip无法检测到用户的位置。

以前,在php端,我们使用了以下内容:

function geoiplookup($ip){
    if($return=@geoip_country_code_by_name($ip))
        return $return;
    return false;
}

因此,如果geoip_country_code_by_name无法检索国家/地区代码,从而返回false,我们将脚本存储的国家/地区代码设置为(bool)false。

所以,

当使用apache mod_geoip时,如果无法检索国家代码,geoip会将这2个变量设置为什么?

谢谢。

我们决定看一下mod_geoip源码。

来自Changes文件:

1.3.3 2008年8月13日

  • 修复当使用区域数据库且未找到国家/地区时,未设置GEOIP_COUNTRY_CODE。 以前GEOIP_COUNTRY_CODE已设置但空(Boris Zentner)

因此,如果无法从提供的IP中找到国家/大陆,则GEOIP_COUNTRYC_CODE将不会被设置。

有人可以证实这一点,因为这是我们代码库的一个相当重要的部分,我们需要确保。

我们很难通过C代码查看并确切了解未知国家/地区的情况。


据我们所知,是的,只有在可以检测到国家时才设置GEOIP_COUNTRY_CODE。

来自mod_geoip源:

if (cfg->GeoIPOutput & GEOIP_NOTES) {
    ap_table_set(r->notes, "GEOIP_CONTINENT_CODE", continent_code);
    ap_table_set(r->notes, "GEOIP_COUNTRY_CODE", country_code);
    ap_table_set(r->notes, "GEOIP_COUNTRY_NAME", country_name);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM