public static function run() { // Jump ship if no key has been specified if (!Config::has('locate::options.maxmind_key')) { return false; } $options = array('l' => Config::get('locate::options.maxmind_key'), 'i' => Locate::ip()); $response = @file_get_contents('http://geoip.maxmind.com/b?' . http_build_query($options)); if ($response !== false) { $response = explode(',', $response); // Verify fields if (isset($response[5]) && $response[5] == 'IP_NOT_FOUND') { return false; } $required_fields = array(1, 2, 3, 4); foreach ($required_fields as $field) { if (!isset($response[$field]) || empty($response[$field])) { return false; } } $states = Config::get('locate::abbrevs.states'); return array('city' => $response[2], 'state' => isset($states[$response[1]]) ? $states[$response[1]] : null, 'state_code' => $response[1], 'country' => $response[0], 'country_code' => $response[0], 'zipcode' => null, 'lat' => $response[3], 'lng' => $response[4]); } return false; }
public static function run() { $response = @file_get_contents('http://freegeoip.net/json/' . Locate::ip()); if ($response !== false) { $response = json_decode($response, true); // Verify fields $required_fields = array('city', 'region_name', 'latitude', 'longitude'); foreach ($required_fields as $field) { if (!isset($response[$field]) || empty($response[$field])) { return false; } } return array('city' => ucwords(strtolower($response['city'])), 'state' => ucwords(strtolower($response['region_name'])), 'state_code' => strtoupper($response['region_code']), 'country' => ucwords(strtolower($response['country_name'])), 'country_code' => strtoupper($response['country_code']), 'zipcode' => $response['zipcode'], 'lat' => $response['latitude'], 'lng' => $response['longitude']); } return false; }
public static function run() { // Jump ship if no key has been specified if (!Config::has('locate::options.ipinfodb_key')) { return false; } $options = array('key' => Config::get('locate::options.ipinfodb_key'), 'ip' => Locate::ip(), 'format' => 'json'); $response = @file_get_contents('http://api.ipinfodb.com/v3/ip-city/?' . http_build_query($options)); if ($response !== false) { $response = json_decode($response, true); // Verify fields if (!isset($response['statusCode']) || $response['statusCode'] != 'OK') { return false; } $required_fields = array('cityName', 'regionName', 'latitude', 'longitude'); foreach ($required_fields as $field) { if (!isset($response[$field]) || empty($response[$field])) { return false; } } return array('city' => ucwords(strtolower($response['cityName'])), 'state' => ucwords(strtolower($response['regionName'])), 'state_code' => array_search(ucwords(strtolower($response['regionName'])), Config::get('locate::abbrevs.states')), 'country' => ucwords(strtolower($response['countryName'])), 'country_code' => strtoupper($response['countryCode']), 'zipcode' => $response['zipCode'], 'lat' => $response['latitude'], 'lng' => $response['longitude']); } return false; }