IP Coğrafi Konum, bir ziyaretçinin konumunu IP adresine göre belirlemeye yardımcı olur. Genellikle IP adresi, coğrafi konum bilgisi ile ziyaretçilerin konumunu öğrenmek için kullanılır. Coğrafi konumu elde etmek için önce IP adresini tespit etmemiz gerekir. IP adresine bağlı olarak konum bilgisi (ülke, eyalet, şehir vb.) alınabilir. IP adreslerinden coğrafi konum verilerini toplamak için çeşitli Üçüncü Taraf API hizmetleri mevcuttur. Ancak herhangi bir 3. Taraf web hizmeti olmadan ziyaretçilerin IP coğrafi konumunu almak için PHP’yi kullanabilirsiniz. Bu derste, PHP kullanarak kullanıcının IP adresini nasıl tespit edeceğinizi ve IP’den coğrafi konumu nasıl alacağınızı göstereceğim .
$_SERVER değişkeni PHP’de kullanıcının IP adresini almak için kolay bir seçenektir. IP adresi toplandıktan sonra, PHP kullanarak IP adresinin konumunu bulmak için GeoIP2 veritabanını kullanacağız.
Bu örnek scriptimizde PHP kullanarak herhangi bir web servisine veya API’ye bağlı kalmadan aşağıdaki işlemleri yapacağız.
- Geçerli kullanıcının IP adresini alacağız.
- PHP kullanarak IP adresinden coğrafi konum bilgisini alacağız.
- Ziyaretçinin IPv4 ve IPv6 adresleriyle ilişkili ülkesini, şehrini ve posta kodunu tespit edeceğiz.
Yukarıda geçerli ip adresini tespit ettik ve bir değişkene atadık.
PHP kullanarak IP Adresinden Coğrafi Konum Alalım
GeoLite2 Geolocation Veritabanı:
Başlamadan önce, MaxMind hesabından en son GeoLite2-City veritabanını indirmeniz gerekir .
- Bu GeoLite2 veritabanı ikili dosyasını (GeoLite2-City.mmdb) proje dizininize yerleştirin.
GeoIp2 Kütüphanesini İndirin ve Kurun:
GeoIp2 kütüphanesi, PHP kullanarak IP adresine dayalı olarak GeoLite2 ikili veritabanından coğrafi konum verilerinin alınmasına yardımcı olur.
GeoIp2 PHP kütüphanesini Composer aracılığıyla indirip kurmak için aşağıdaki komutu çalıştırın.
1 2 | composer require geoip2/geoip2 |
1 2 | require_once 'vendor/autoload.php'; use GeoIp2\Database\Reader; |
PHP ile GeoLite2 Veritabanından Coğrafi Konum verilerini alın:
- Aşağıdaki coğrafi konum verileri, verilen IP adresine göre veritabanından döndürülecektir.
- IP adresi (
traits->network
) - Ülke kodu (
country->isoCode
) - Ülke adı (
country->name
) - Şehir İsmi (
city->name
) - Posta kodu (
postal->code
) - Enlem (
location->latitude
) - Boylam (
location->longitude
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | try { // Yeni bir Reader nesnesi oluşturalım ve veritabanı dosyasının yolunu belirtelim $cityDbReader = new Reader('path/to/GeoLite2-City.mmdb'); // Coğrafi konum verilerini alalım $record = $cityDbReader->city($ip_addr); } catch(Exception $e) { $api_error = $e->getMessage(); } if(empty($api_error)){ $ip_address = !empty($record->traits->network)?$record->traits->network:''; $country_code = !empty($record->country->isoCode)?$record->country->isoCode:''; $country_name = !empty($record->country->name)?$record->country->name:''; $state_code = !empty($record->mostSpecificSubdivision->isoCode)?$record->mostSpecificSubdivision->isoCode:''; $state_name = !empty($record->mostSpecificSubdivision->name)?$record->mostSpecificSubdivision->name:''; $city_name = !empty($record->city->name)?$record->city->name:''; $zipcode = !empty($record->postal->code)?$record->postal->code:''; $latitude = !empty($record->location->latitude)?$record->location->latitude:''; $longitude = !empty($record->location->longitude)?$record->location->longitude:''; echo 'IP Address: '.$ip_address.'<br/>'; echo 'Country Code: '.$country_code.'<br/>'; echo 'Country Name: '.$country_name.'<br/>'; echo 'State Code: '.$state_code.'<br/>'; echo 'State Name: '.$state_name.'<br/>'; echo 'City Name: '.$city_name.'<br/>'; echo 'Zipcode: '.$zipcode.'<br/>'; echo 'Latitude: '.$latitude.'<br/>'; echo 'Longitude: '.$longitude; }else{ echo $api_error; } |
Sonuç
GeoLite2 Veritabanını kullanmanın temel avantajı, konumu bir IP adresinden ücretsiz olarak alabilmenizdir. Bir IP adresinin coğrafi konumunu öğrenmek için herhangi bir web hizmeti veya API kullanmanıza gerek yoktur. Konum verileri yerel veritabanı dosyasından alındığından, IP adresinin Ülke Eyalet Şehir Posta Kodu ayrıntılarını almak için herhangi bir 3. Taraf bağımlılığı yoktur. Bu IP Coğrafi Konum betiği, PHP kullanarak IP adresinin konumunu almanın kolay bir yolunu sağlar.
İyi çalışmalar, sevgiler