The initial question remains relevant for many; at the end of 2016).
My answer after many years of experience working with a GEO location is as follows:
Real location reporting outside the Country is unreliable. All information is gleaned from IP # ISP registration, and this is relevant information that is regularly updated and shared by major data providers. As you remove or purchase IP packets, suppliers should receive information about registration / changes to their respective enterprises (for example, Internet providers). Most of the numbers are obtained in “blocks”, but not all of them are necessarily related to the same server.
* Many (if not most?) Small private websites that provide information to the public use the "Maxmind FREE DB" and (incorrectly) pass this on to the public; read the Maxmind disclaimers. Smaller sites do not have the resources to constantly update credentials.
The free maxmind and "ip2location" databases are a smaller subset of their payroll databases; see their reservations for an explanation of what is missing.
Many IP addresses purchased in blocks are divided into any number of servers, and this leads to ambiguity of information. When using a wireless network connection to an Internet service provider, unlike the probably stable ADSL / cable / bla wired connection, the error can be very striking due to the especially wide distribution of ISP network servers (relaying); in most cases, non-static changes between sessions, and possibly even some during each session.
As an example, when using a roaming laptop laptop to connect to an Internet service provider, I am often quoted as being in a different state, and it could be (here in AU) anywhere from hundreds to thousands of KM from my actual location.
Can you ... with PHP ?
Using the main pair of database providers (for example, ip2location.com), you will have access to available server-side scripts that can be used to obtain the necessary information. And instead of getting a less reliable free database from them, I use ip2location DB1 to get "Country" visitors from which I can do what I want through Perl and PHP.
I also automatically download and decompress, as in the case of use, binary db on a monthly basis immediately after updating it. Obviously, viewing access from your own site eliminates problems with remote acquisition and on-demand processing.
For my requirements, ip2location FULL db was significantly cheaper than Maxmind per year. * However, Maxmind FREE db is more extensive than the free version of IB2location FREE.
Pay attention when you try to get additional addresses and data about visitors, etc. I highly recommend that it be displayed in such a way that the visitor can make corrections; so that they are not upset.
Sincerely.