Май 15
Решить задачу, обозначенную в сабже, оказалось не так то просто.
Вариантов много – делать запрос к сторонним сервисам, ставить на сервер GeoIP из PCPE, использовать готовые SQL и CSV базы или бинарную базу того же GeoIP но без установки модуля.
Для решения своих задач я выбрал последний вариант.
Для этого необходимо скачать ряд файлов:
А также саму базу – GeoLiteCity.dat.gz [~25 mB].
Пример использования:
include("geoipcity.inc");
$gi=geoip_open("GeoLiteCity.dat",GEOIP_STANDARD);
$res=GeoIP_record_by_addr($gi,$_SERVER['REMOTE_ADDR']);
print_r($res);
geoip_close($gi);
Вместо $_SERVER['REMOTE_ADDR'] может стоять любой IP-адрес. На выходе в переменной $res будет массив содержащий данные о стране и городе (и еще некоторые данные, которые врядли Вам понадобятся).

Установил у себя на сайте, работает отлично.
Как можно реализовать возможность автоматического открытия заданной страницы на сайте по [city] => Moscow или Kazan???
Что бы для Moscow, например открывалась сразу http://www.moscow.site.ru, а для Kazan: http://www.kazan.site.ru