PHP ile Kullanıcıdan Onay Almadan Ülke ve Şehrine Erişme

Normalde PHP ile kullanıcının adresine erişmek isterseniz bunun için kullanabileceğiniz sistemler ve kütüphaneler bulunuyor ancak bir çoğu daha detaylı bilgilere erişim sağladığı için tarayıcı aracılığıyla kullanıcıdan konum verilerine erişim izni isteniyor. Benim bahsedeceğim yöntemle sadece ülke ve şehir bilgilerine erişeceğimiz için kullanıcıdan konum bilgisine erişim izni istenmeyecek ve direkt olarak tarafımıza ülkesi ve şehri iletilecek.



Öncelikle kullanıcının ip adresini çekelim:

$ip = $_SERVER['REMOTE_ADDR'];

Ardından fonksiyonumuzu ekleyelim:

function ip_info($ip = NULL, $purpose = "location", $deep_detect = TRUE) {
$output = NULL;
if(filter_var($ip, FILTER_VALIDATE_IP) === FALSE) {
if ($deep_detect) {
if (filter_var(@$_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP)){
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
if (filter_var(@$_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP)){
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
}
}
$purpose = str_replace(array("name", "\n", "\t", " ", "-", "_"), NULL, strtolower(trim($purpose)));
$support = array("country", "countrycode", "state", "region", "city", "location", "address");
$continents = array(
"AF" => "Africa",
"AN" => "Antarctica",
"AS" => "Asia",
"EU" => "Europe",
"OC" => "Australia (Oceania)",
"NA" => "North America",
"SA" => "South America",
"TR" => "Türkiye",
);
if (filter_var($ip, FILTER_VALIDATE_IP) && in_array($purpose, $support)) {
$ipdat = @json_decode(file_get_contents("http://www.geoplugin.net/json.gp?ip=". $ip));
if (@strlen(trim($ipdat->geoplugin_countryCode)) == 2) {
switch ($purpose) {
case "city":
$output = @$ipdat->geoplugin_city;
break;
case "countrycode":
$output = @$ipdat->geoplugin_countryCode;
break;
}
}
}
return $output;
}

Şimdi kullanıcının ülkesini ve şehrini fonksiyon aracılığıyla çekelim:

echo $ulke = ip_info($ip, "Country Code");
echo $sehir = ip_info($ip, "City");

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir