私は国固有の Web サイトを開発しています。この Web サイトでは、php サーバーに地理リダイレクトがインストールされていると考えていました。基本的なアプローチは、着信 IP アドレスを記録し$_SERVER['REMOTE_ADDR']
、地理位置情報データベースを使用してそれを国情報に変換することです。私は Maxmind ジオロケーション サービスを利用しました。グーグルの力と実験の力で私が思いついた最終的なスクリプトは次のとおりです
index.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で同様の質問を見つけようとしましたが、できませんでした。詳細なヘルプをいただければ幸いです。前もって感謝します。