PHP ile IP Adresinden Şehir Bulma

Türk Full Stack Developer

PHP ile IP Adresinden Şehir Bulma

Merhaba, Bu Yazımda Sizlere Özellikle Çok Dilli PHP Uygulamalarında Sıkça Karşımıza Çıkan Bir Konudan Bahsetmek İstedim. PHP ile IP Adresinden Şehir Bulma

 

Bir developer yaptığı web sitesinde az çok çok iş mantığı ile kodlarını yazmalıdır. Bunun yanında son kullanıcıdan ne kadar az veri alınırsa o kadar iyi felsefesine de sahip olması gerekmektedir. Örnek senaryo verecek olursam üyelik formunda mutlaka şehir alınması gereken durumlar olabilir. Ancak herkesin malumu olduğu üzere özellikle üyelik aşamasında kullanıcılar az veri girmek istemektedir. Dolayısı ile şehir bilgisi istemek kullanıcıların üyelik formunu doldurmaktan vaz geçmelerine neden olabilir. İşte bu gibi durumlarda PHP ile IP Adresinden Şehir Bulma uygulaması işinize yarayabilir.

 

 

Uygulamanın diğer kullanılabileceği alanlar;

  • Üyelik formunda otomatik şehir getirme
  • Komplike araçlar yazarken şehri bulma
  • Kullanıcıların girdiği şehir acaba doğru mu uygulamaları
  • Ödeme formlarında şehir bilgisini almak
  • Ödeme apilerinde şehir bilgilerini almak

Ve benzeri uygulamalarda kullanabilirsiniz.

 

PHP ile IP Adresinden Şehir Bulma

Bu uygulama ipinfodb web sitesi ile koordineli bir şekilde çalışmaktadır. Ben bu yazıyı girerken ipinfodb web sitesi sorunsuz bir şekilde çalışmaktaydı. Ancak daha sonradan bozulmalar meydana gelmiş ise konunun altındaki yorum alanından bana bildirim atarsanız başka bir çözüm yolu sağlayabilirim.

Bu uygulama PHP’nin curl kütüphanesini kullandığından sunucunuzda CURL modülünün açık olması gerekmektedir.

PHP ile IP Adresinden Şehir Bulma Kodu

function detect_city($ip) {
$default = 'UNKNOWN';
if (!is_string($ip) || strlen($ip) < 1 || $ip == '127.0.0.1' || $ip == 'localhost')
$ip = '8.8.8.8';
$curlopt_useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729)';
$url = 'http://ipinfodb.com/ip_locator.php?ip=' . urlencode($ip);
$ch = curl_init();
$curl_opt = array(
CURLOPT_FOLLOWLOCATION  => 1,
CURLOPT_HEADER      => 0,
CURLOPT_RETURNTRANSFER  => 1,
CURLOPT_USERAGENT   => $curlopt_useragent,
CURLOPT_URL       => $url,
CURLOPT_TIMEOUT         => 1,
CURLOPT_REFERER         => 'http://' . $_SERVER['HTTP_HOST'],
);
curl_setopt_array($ch, $curl_opt);
$content = curl_exec($ch);
curl_close($ch);
if ( preg_match('{<li>City : ([^<]*)</li>}i', $content, $regs) )  {
$city = $regs[1];
}
if ( preg_match('{<li>State/Province : ([^<]*)</li>}i', $content, $regs) )  {
$state = $regs[1];
}
if( $city!='' && $state!='' ){
$location = $city . ', ' . $state;
return $location;
}else{
return $default; 
}
}
echo detect_city("173.194.39.242");

Yukarıdaki kodlarda en sonda yer alan satırda 173.194.39.242 yazan IP adresini kendi IP adresinizle değiştirmeniz gerekmektedir. Bunun için aşağıdaki fonksiyonu kullanabilirsiniz.

$_SERVER["HTTP_REFERER"]

Herkese iyi çalışmalar dilerim.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir