Существует 101 способ определения с какого города на сайт пришел посетитель. Есть разнообразные компилированные базы данных с собственным форматом и API и т.д. Мы хотим поделится нашей базой и примером запроса для выборки.
Для начала создадим 2 таблицы:
CREATE TABLE `artkiev_ip` (
`idd` int(11) unsigned default NULL,
`ip1` bigint(20) unsigned default NULL,
`ip2` bigint(20) unsigned default NULL,
`la` char(2) default NULL,
UNIQUE KEY `ip` (`ip2`,`ip1`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE `artkiev_geo` (
`id` int(11) unsigned NOT NULL default '0',
`city` varchar(255) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3017 DEFAULT CHARSET=utf8;
Затем импортируем записи (Дамп mysql таблиц городов Украины и России)
Пример mySQL запроса для выборки города по IP:
$ip = sprintf('%u', ip2long($_SERVER['REMOTE_ADDR'));
$result=mysql_query("SELECT `la`, (SELECT `city` FROM `artkiev_geo` WHERE `id`=`idd` LIMIT 1) as `ci` FROM `artkiev_ip` WHERE $ip BETWEEN `ip1` AND `ip2`");
$row=mysql_fetch_row($result);
Вот так все просто. На выходе мы получаем: страну, город и область.