我正在开发一个特定于国家/地区的网站,我认为在我的 php 服务器上安装了地理重定向。基本方法是记录传入的 IP 地址$_SERVER['REMOTE_ADDR']
,然后使用地理定位数据库将其转换为国家信息。我确实使用了 Maxmind 地理定位服务。我用一些谷歌能力和实验能力得出的最终脚本如下
索引.php
<?php
getCountry($_SERVER['REMOTE_ADDR']);
$ip=$_SERVER['REMOTE_ADDR'];
function getCountry($ipAddress)
{
// get the country of the IP from the MAXMIND
$country="";
// include functions
include("geoip.inc.php");
// read GeoIP database
$handle = geoip_open("GeoIP.dat", GEOIP_STANDARD);
// map IP to country
$country = geoip_country_name_by_addr($handle, $ipAddress);
// close database handler
geoip_close($handle);
if ($country==""|| empty($country))
{
$country="Unknown";
}
return $country;
}
$country_code = geoip_country_code_by_addr($gi, "$ip");
// Country name is not used so commented
// Get Country Name based on source IP
//$country = geoip_country_name_by_addr($gi, "$ip");
geoip_close($gi);
switch($country_code)
{
case "US": header("Location: http://site1.com
"); break;
case "CA": header("Location: http://site2.com
"); break;
case "GB": header("Location: http://site3.com
"); break;
default: header("Location: http://site.com
");
}
?>
我从https://www.maxmind.com/download/geoip/api/php-20120410/geoip.inc下载了geoip.inc
和来自http://dev.maxmind.com/geoip/legacy/geolite/的GeoIP.dat
但是 某个地方出了问题。代码不执行,每次都有一些错误。尝试了很多愚蠢的错误排列,但没有任何效果。调用 URL 会在 URL 上显示文件 geoip.inc 的代码。
试图在 SO 上找到任何类似的问题,但找不到。详细的帮助将不胜感激。提前致谢。