Hola odek, te cuento, de principio hay una forma de saber desde que lugar proviene la IP, me imagino que quizás utilices PHP para la aplicación, y desde el lado del servidor tu puedes saber la IP del cliente que se conecte a tu servidor web, para ello puedes utilizar este metodo
https://gist.github.com/cballou/2201933
en cuanto a lo de la localización de la IP que obtuviste por medio de ese metodo, puedes utilizar este servicio que te permite ubicar las IP en una ciudad en concreto por ejemplo y si no está en el lugar que deseas, lo bloqueas.
http://www.geoplugin.com/webservices/php
(en caso de que no quisieras recurrir a un servicio externo, puedes utilizar esto http://dev.maxmind.com/geoip/geoip2/geolite2/ ahí te descargas una base de datos con localizaciones y la implementas)
Ahora, siendo más especifico con tu respuesta, puedes pedir al usuario su localización haciendo uso de HTML5, el problema de esto, es que ocurre de lado del cliente, por ende se debe utilizar Javascript de lado del cliente también, y este podría llegar a falsear los datos.
Para hacer lo que deseas y obtener su latitud y longitud, puedes hacer uso de esta libreria
https://github.com/estebanav/javascript-mobile-desktop-geolocation
Incluyes el Javascript y lo usas de la siguiente forma
Código Javascript
:
Ver originalif(geoPosition.init()){ // Iniciar geolocalizacion
geoPosition.getCurrentPosition(success_callback,error_callback,{enableHighAccuracy:true});
}else{
// No se puede utilizar la geolocalizacion en ese dispositivo
}
geoPositionSimulator.init();
// p : geolocation object
function success_callback(p){
// p.latitude : valor de la latitud
// p.longitude : valor de la longitud
}
function error_callback(p){
// p.message : mensajes de error
}
y en success_callback, utilizas una petición Ajax a algún fichero de tu servidor que hayas configurado para recibir latitud y longitud, y posteriormente realizar el bloqueo. Lo de utilizar Ajax lo digo porque el bloqueo lo debes hacer si o si, desde el lado del servidor y no desde el cliente, es por ello que debes recibir estos datos.
Saludos