This is one example of an open source class to do geolocation. I can't say how well it works as I haven't used it personally. You can probably do a search and finds others.
http://www.phpclasses.org/package/38...he-hostip.html
Since you have already identified maxmind as part of your solution, you have probably already done some research. Here is an article that talks about the accuracy and issues for geolocation with maxmind as their solution as well.
http://www.chehodgins.com/php/free-a...cation-in-php/
With respect to your question 3, why not do the geolocation and then ask the user to press enter to confirm it or allow them to make changes to it? That way it is minimal effort in most cases but when it is wrong, they do get the chance to correct it.
Reputation Points: 210
Solved Threads: 228
Nearly a Posting Virtuoso
Offline 1,389 posts
since Sep 2008