首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache mod_geoip -如果国家/大陆未知,$_SERVER['GEOIP_COUNTRY_CODE'] / $_SERVER['GEOIP_CONTINENT_CODE']等于什么?

Apache mod_geoip -如果国家/大陆未知,$_SERVER['GEOIP_COUNTRY_CODE'] / $_SERVER['GEOIP_CONTINENT_CODE']等于什么?
EN

Stack Overflow用户
提问于 2012-06-06 12:13:33
回答 1查看 7K关注 0票数 0

我们使用apaches、mod_geoip和php的geoip.so模块来检测用户访问的国家/大陆。

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

这是多余的。

我们正在考虑禁用php的代码,因为我们已经在$_SERVER‘’GEOIP_ country _CODE‘/$_SERVER’‘GEOIP_ geoip.so _CODE’中公开了国家/大陆。

在我们这样做之前,我们需要知道如果geoip无法检测到用户的位置,这2个值将等于什么。

以前,在php端,我们使用的内容大致如下:

代码语言:javascript
复制
function geoiplookup($ip){
    if($return=@geoip_country_code_by_name($ip))
        return $return;
    return false;
}

因此,如果geoip_country_code_by_name无法检索国家代码,因此返回false,我们将脚本存储的国家代码设置为(布尔)false。

所以,

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

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-06 13:01:54

我们决定看一看mod_geoip源代码。

在更改文件中:

1.3.3 2008年8月13日

当使用区域数据库但未找到国家/地区时,未设置

  • 修复GEOIP_COUNTRY_CODE。之前设置了GEOIP_COUNTRY_CODE,但为空( Boris Zentner )

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

有人能确认这一点吗,因为这是我们代码库中相当重要的一部分,我们需要确保。

我们很难通过C代码找出在未知国家到底发生了什么。

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

从mod_geoip源文件中:

代码语言:javascript
复制
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);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10908082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档