Çalıştığınız projeye göre bazen ziyaretçilerin ülkelerini, koordinatları vb. konum bilgilerini bulmanız gerekebiliyor. Örneğin; çoklu dil desteği olan bir sitenizde ziyaretçilerin geldiği ülkeye göre sayfa dilini otomatik değiştirebilirsiniz. Bu şekilde kullanıcılar sitenize kolay bir şekilde adapte olmuş olacaktır. Konum bulma için kullanacağımız servis gibi internette pek çok servis bulunmaktadır. Bugün bunlardan bir tanesi ile küçük bir uygulama yapacağınız ancak temel mantık neredeyse tüm servislerde aynıdır. Google’la ip location api yazarsanız pek çok servis bulabilirsiniz. Kullanacağımız servis aylık 10 bin isteği ücretsiz olarak karşılamaktadır. Sonrası için paket yükseltmesi yapmanız gerekiyor. İlk olarak api almak için siteye kayıt olmanız gerekiyor. https://ipstack.com/product adresine girdikten sonra en baştaki FREE paketindeki GET FREE API KEY linkine tıklıyoruz.
Gelen sayfada formdaki * ile işaretli alanları doldurup kayıt olunuz.
Kayıt olduktan sonra sizi direk api key sayfasına yönlendirecektir. Eğer yönlendirme olmazsa giriş yaptıktan sonra Dashboard linkine tıklayıp aynı sayfaya gidebilirsiniz.
Gelen sayfadan API Access Keyi kopyalayalım ilerde lazım olacaktır.
İsterseniz api dökümanından gerekli kodları bulup kendiniz istekte bulunabilirsiniz. Ayrıca farklı parametreler ile ip adresinden biraz daha fazla bilgi alabilirsiniz. https://ipstack.com/documentation
Biz kendi örneğimizden devam edelim. Aşağıdaki kodlarda $access_key yazan yere kendi access keyinizi yapıştırınız. Normalde çıktı json olarak gelmektedir. Biz kolay işlem yapmak için json verisini decode edip array formatına çeviriyoruz. Koddaki diğer alanlar açıklama satırları ile anlatılmıştır.
<?php
function GetIP(){
if (!empty($_SERVER['HTTP_CLIENT_IP'])){
$ip=$_SERVER['HTTP_CLIENT_IP'];
}elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
$ip = GetIP(); // fonksiyon ile gerçek ip adresini buluyoruz.
$access_key = "";
$ch = curl_init('http://api.ipstack.com/'.$ip.'?access_key='.$access_key.'');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // curl isteği sonucu gelen verileri değişkene atıyacağımız için ekrana yazdırmayı kapatıyoruz.
$data = curl_exec($ch);
$curl_put = curl_getinfo($ch); // istek ile karşı tarafta açılan oturumun bilgisini alıyoruz.
curl_close($ch); // bağlantıyı kapatıyoruz
if(!curl_errno($ch) and $curl_put["http_code"] == 200){ // curl üzerinde hata yoksa ve sayfaya başarılı(200) şekilde ulaşılmışsa api çalışmık demektir.
$api_result = json_decode($data, true);
print_r($api_result);
}else{
echo "Api çalışamadı.";
}
?>
Demo: https://dosyalar.sitenikur.com/ipden-konum-bulma/
Demoyu indir: https://dosyalar.sitenikur.com/ipden-konum-bulma.rar
Gelen veriyi istediğiniz gibi kullanabilirsiniz.