Я работаю над реализацией функции geoIP
, чтобы перенаправить пользователя с моего сайта .com в соответствующий домен страны (.fr, .es, .co.uk ... и т. Д.).Функция GeoIP возвращает 0
Я следующий в моем index.php
, чтобы проверить пользователей IP:
ini_set('display_errors', 1);
require_once("geoip.inc");
$gi = geoip_open("GeoIP.dat",GEOIP_STANDARD);
$country_code = geoip_country_code_by_addr($gi, $_SERVER['REMOTE_ADDR']);
geoip_close($gi);
if($country_code == 'ES')
{
header('Location: https://www.testsite.es');
}
elseif($country_code == 'GB')
{
header('Location: https://www.testsite.co.uk');
}
elseif($country_code == 'FR')
{
header('Location: https://www.testsite.fr');
}
else {
header('Location: https://www.testsite.com/home');
}
Когда я проверяю переменную $country_code
это пустая строка, и в результате выше терпит неудачу, и я всегда ударил https://www.testsite.com/home
.. .
Я начал копаться в коде и заметил, что первый я называю этот метод:
function geoip_country_code_by_addr($gi, $addr) {
if ($gi->databaseType == GEOIP_CITY_EDITION_REV1) {
$record = geoip_record_by_addr($gi, $addr);
if ($record !== false) {
return $record->country_code;
}
} else {
$country_id = geoip_country_id_by_addr($gi, $addr);
if ($country_id !== false) {
return $gi->GEOIP_COUNTRY_CODES[$country_id];
}
}
return false;
}
который кал ls:
function geoip_country_id_by_addr($gi, $addr) {
$ipnum = ip2long($addr);
return _geoip_seek_country($gi, $ipnum) - GEOIP_COUNTRY_BEGIN;
}
Я не могу понять, почему он продолжает терпеть неудачу и возвращает «0»? Я использую Maxminds geoip.inc php для проверки кода страны.
Я проверил, что в моем файле php.ini включен mbstring
. По какой-то причине он просто не находит код страны на основе IP-адреса, который я передаю ему. Кто-нибудь может помочь с точки зрения того, что может быть причиной этого?
Не каждый IP-адрес связан с местоположением (а местоположение, возвращаемое какой-либо службой геоинформации, в лучшем случае представляет собой образованную догадку). Это происходит со всеми адресами, которые вы проходите? – Piskvor
Да, каждый из них, я даже пытался использовать свой собственный IP-адрес, который, как я знаю, работал в прошлом, когда я использовал php geo IP с 'PECL'. Конечно, вы могли бы сказать, почему я просто не использую этот способ, но, к сожалению, я не могу спуститься по этому маршруту. – Javacadabra