Итак, у меня есть этот код, и мой ip из страны ph;
<?php
require_once('geoip.inc');
$gi = geoip_open('GeoIP.dat', GEOIP_MEMORY_CACHE);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
switch ($country) {
case 'ph':
$location = 'url/ph/index.php';
break;
case 'us':
$location = 'url/intl/index.php';
break;
case 'in':
$location = 'url/intl/index.php';
break;
default:
$location = 'url/intl/index.php';
break;
}
header('Location: '.$location.'');
?>
всякий раз, когда я пытаюсь получить доступ к своему сайту с этим кодом и используя свой собственный домашний ip (Филиппины), он продолжает перенаправлять меня на страницу intl / index.php. Все в моем домашнем каталоге уже, как geoip.inc и geoip.dat. Оба они уже находятся в корневой папке.
Кто-нибудь знает, что мне здесь не хватает? Спасибо!
Функция geoip_country_code_by_addr возвращает код страны в верхнем регистре, поэтому PH, US, IN и т. Д. И когда вы вводите в коммутатор коды стран в нижнем регистре, всегда включает данные по умолчанию.
Так что нужно изменить коды стран в верхнем регистре, как
<?php
require_once('geoip.inc');
$gi = geoip_open('GeoIP.dat', GEOIP_MEMORY_CACHE);
$country = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
switch ($country) {
case 'PH':
$location = 'url/ph/index.php';
break;
case 'US':
$location = 'url/intl/index.php';
break;
case 'IN':
$location = 'url/intl/index.php';
break;
default:
$location = 'url/intl/index.php';
break;
}
header('Location: '.$location.'');
?>
Других решений пока нет …