我们使用apaches、mod_geoip和php的geoip.so模块来检测用户访问的国家/大陆。
最初我们只使用PHP,但几个月前我们开始在apache配置中使用geoip数据,所以现在我们两者都使用。
这是多余的。
我们正在考虑禁用php的代码,因为我们已经在$_SERVER‘’GEOIP_ country _CODE‘/$_SERVER’‘GEOIP_ geoip.so _CODE’中公开了国家/大陆。
在我们这样做之前,我们需要知道如果geoip无法检测到用户的位置,这2个值将等于什么。
以前,在php端,我们使用的内容大致如下:
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会将这两个变量设置为什么?
谢谢。
发布于 2012-06-06 13:01:54
我们决定看一看mod_geoip源代码。
在更改文件中:
1.3.3 2008年8月13日
当使用区域数据库但未找到国家/地区时,未设置
因此,如果从提供的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);
}https://stackoverflow.com/questions/10908082
复制相似问题