Generalnie to takie dane znajdziesz w zmiennej $_SERVER
https://secure.php.net/manual/en/reserved.variables.server.php
Co do podawania przybliżonej lokalizacji, to konkretna pula adresów IP działa w pewnym regionie.
Tutaj masz fragment kodu z SO
$user_ip = getenv('REMOTE_ADDR');
$geo = unserialize(file_get_contents("http://www.geoplugin.net/php.gp?ip=$user_ip"));
$country = $geo["geoplugin_countryName"];
$city = $geo["geoplugin_city"];