我们使用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个变量设置为什么?
感谢。
答案 0 :(得分:2)
我们决定看看mod_geoip源。
来自Changes文件:
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);
}