Страна геолокации перенаправляет меня на неправильную ссылку?

Итак, у меня есть этот код, и мой 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. Оба они уже находятся в корневой папке.

Кто-нибудь знает, что мне здесь не хватает? Спасибо!

0

Решение

Функция 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.'');
?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]