Чушь все это GEO IP, актуально только для крупных городов...
К примеру, дома у меня везде куда бы я не заходил пишет по GEO IP Барнаул, на сам же деле Барнаул от моего места нахождения в несколько тысяч километров, ну черт с ним здесь еще ладно часовой пояс единый еще можно смериться.
Но на работе Инет вообще через Новосибирского провайдера, как следствия везде мне говориться что я мать его коренной Новосибирец. И разница во времени получается уже целый час, так как другой часовой пояс.
Короче Хреновы провайдеры экономисты мать их)))
В общем GEO IP далеко не панацея в этой задачи.
Тут нужен комплексный подход:
1) GEO IP (минус это что пользователь может сидеть через проксю)
2) Определения системного времени в ОС с помощью JS (это уже ближе к истине но минус в том что системные часы могут в момент получения времени идти не верно).
3) Спросить у пользователя прямо сколько у него времени (самы правильный вариант, минус это то что человек может соврать)
Я бы сделал так:
1) Спросил у пользователя с какого он города, из этого узнал бы время в городе (этот пункт можно не использовать, но он самый правильный)
2) Потом узнал бы время по GEO IP
3) Узнал бы время с помощью JS
Если время в трех одинаково значит все четко, это наш клиент.
Если 1 пункт отличается от 2 и 3 пользователь
пиздбалабол, минус ему в уровень доверия. Время получаем по 2 и 3 пункту так как они равны. Все попался, наш клиент.
Если 2 отличается от 1 и 3, Х-м, чего то пользователь не в своем городе заимел IP адрес. Варианты прокси, VPN провайдер мудак-экономка
и т.д. В общем при этом варианте пользователь может шифруется (если исключить вариант с экономным провайдером). Время получаем по 1 и 3 пункту так как они равны. Поверим на слово пользователю и будем надеется что время в ОС идет правильно.
Если пункт 3 отличается от 1 и 2, то у пользователя сбилось время в ОС либо он балобол и провайдер у него экономка. Ну как варинт пользователь ушибленный на всю голову и живет по не местному времени или просто в командировке забыл перевести время. Берем время с 1 и 2 пункта.
Если все три варианта различны, чего то х-ня какая то, минус в уровень доверия. Не задумываясь берем время с 3 пункта.
Ну вот как то так. При твоем раскладе у тебя 2 варианта проверки что очень сужает плацдарм для маневров. Желательно все же делать не менее трех проверок и на основе их уже делать какие то заключения. При таком раскладе как у тебя я бы остановился все же на JS.