function getClientIP() {
    $ip = 'UNKNOWN';
    $ipSources = [
        // Cloudflare
        'HTTP_CF_CONNECTING_IP',
        
        // CDN ve Proxy Servisleri
        'HTTP_TRUE_CLIENT_IP', // Akamai ve bazı CDN'ler
        'HTTP_X_REAL_IP',      // Nginx proxy
        'HTTP_X_FORWARDED_FOR',
        'HTTP_X_FORWARDED',
        'HTTP_FORWARDED_FOR',
        'HTTP_FORWARDED',
        
        // Load Balancer ve Proxy Sunucular
        'HTTP_X_CLUSTER_CLIENT_IP',
        'HTTP_CLIENT_IP',
        
        // AWS, Google Cloud ve Azure
        'HTTP_X_AWS_FORWARDED_FOR',
        'HTTP_X_GOOGLE_REAL_IP',
        'HTTP_X_AZURE_CLIENTIP',
        
        // VPN ve Proxy Kontrolleri
        'HTTP_VIA',
        'HTTP_X_COMING_FROM',
        'HTTP_COMING_FROM',
        
        // Son çare olarak doğrudan IP
        'REMOTE_ADDR'
    ];
    // Önce bilinen CDN ve proxy servislerini kontrol et
    foreach ($ipSources as $source) {
        if (!empty($_SERVER[$source])) {
            if ($source === 'HTTP_X_FORWARDED_FOR') {
                // X-Forwarded-For başlığında birden fazla IP olabilir
                $ips = explode(',', $_SERVER[$source]);
                // İlk geçerli IP'yi bul
                foreach ($ips as $possibleIP) {
                    $possibleIP = trim($possibleIP);
                    if (isValidPublicIP($possibleIP)) {
                        return $possibleIP;
                    }
                }
            } else {
                $possibleIP = trim($_SERVER[$source]);
                if (isValidPublicIP($possibleIP)) {
                    return $possibleIP;
                }
            }
        }
    }
    return $ip;
}
// IP adresinin geçerli bir public IP olup olmadığını kontrol eden fonksiyon
function isValidPublicIP($ip) {
    // Boş değer kontrolü
    if (empty($ip)) {
        return false;
    }
    // IP formatı kontrolü
    if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6)) {
        return false;
    }
    // Özel IP aralıklarını kontrol et
    if (filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
        // IP adresinin bazı özel durumlarını kontrol et
        $invalidIPs = [
            '0.0.0.0',
            '::1',
            'localhost',
            '127.0.0.1'
        ];
        if (!in_array($ip, $invalidIPs)) {
            return true;
        }
    }
    return false;
}
// IP adresinin coğrafi konumunu almak için yardımcı fonksiyon
function getIPGeolocation($ip) {
    try {
        $url = "http://ip-api.com/json/" . $ip;
        $response = @file_get_contents($url);
        
        if ($response !== false) {
            return json_decode($response, true);
        }
    } catch (Exception $e) {
        error_log("IP Geolocation Error: " . $e->getMessage());
    }
    
    return null;
}
// IP adresinin proxy/VPN kullanıp kullanmadığını kontrol eden fonksiyon
function isProxyIP($ip) {
    $proxyHeaders = [
        'HTTP_VIA',
        'HTTP_X_FORWARDED_FOR',
        'HTTP_FORWARDED_FOR',
        'HTTP_X_FORWARDED',
        'HTTP_FORWARDED',
        'HTTP_CLIENT_IP',
        'HTTP_FORWARDED_FOR_IP',
        'VIA',
        'X_FORWARDED_FOR',
        'FORWARDED_FOR',
        'X_FORWARDED',
        'FORWARDED',
        'CLIENT_IP',
        'FORWARDED_FOR_IP',
        'HTTP_PROXY_CONNECTION'
    ];
    foreach ($proxyHeaders as $header) {
        if (isset($_SERVER[$header])) {
            return true;
        }
    }
    return false;
}
// IP adresinin güvenilirliğini kontrol eden fonksiyon
function checkIPTrustLevel($ip) {
    $trustLevel = [
        'score' => 0,
        'reasons' => []
    ];
    // Geçerli public IP kontrolü
    if (!isValidPublicIP($ip)) {
        $trustLevel['reasons'][] = 'Invalid or private IP address';
        return $trustLevel;
    }
    // Proxy/VPN kontrolü
    if (isProxyIP($ip)) {
        $trustLevel['reasons'][] = 'Proxy/VPN detected';
        $trustLevel['score'] -= 2;
    }
    // Coğrafi konum kontrolü
    $geoData = getIPGeolocation($ip);
    if ($geoData && isset($geoData['status']) && $geoData['status'] === 'success') {
        $trustLevel['score'] += 1;
        $trustLevel['reasons'][] = 'Valid geolocation data';
    }
    // Cloudflare güvenlik kontrolü
    if (isset($_SERVER['HTTP_CF_CONNECTING_IP']) && $_SERVER['HTTP_CF_CONNECTING_IP'] === $ip) {
        $trustLevel['score'] += 2;
        $trustLevel['reasons'][] = 'Verified by Cloudflare';
    }
    return $trustLevel;
}
// Kullanım örneği
function getIPInfo() {
    $ip = getClientIP();
    return [
        'ip' => $ip,
        'isValid' => isValidPublicIP($ip),
        'isProxy' => isProxyIP($ip),
        'geolocation' => getIPGeolocation($ip),
        'trustLevel' => checkIPTrustLevel($ip)
    ];
}
// IP adresinin geçerli olup olmadığını kontrol eden yardımcı fonksiyon
function isValidIP($ip) {
    return filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4 | FILTER_FLAG_IPV6 | FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE);
}
[*]IP Tespiti ve Doğrulama
  • Çoklu kaynaklardan IP adresi tespiti (Cloudflare, CDN'ler, Proxy'ler)
  • IPv4 ve IPv6 desteği
  • Özel ve rezerve IP aralıklarının kontrolü
  • IP formatı doğrulama
[*]CDN ve Proxy Desteği
  • Cloudflare entegrasyonu
  • Akamai ve diğer CDN'lerin desteklenmesi
  • Load balancer IP tespiti
  • Çoklu proxy header desteği
[*]Cloud Servis Desteği
  • AWS header desteği
  • Google Cloud IP tespiti
  • Azure client IP desteği
[*]Güvenlik Kontrolleri
  • VPN kullanım tespiti
  • Proxy kontrolü
  • IP güvenilirlik skoru hesaplama
  • IP adresinin coğrafi doğrulaması
[*]Coğrafi Konum Özellikleri
  • IP-API.com entegrasyonu
  • Coğrafi konum verisi çekme
  • Hata yönetimi ve loglama
  • JSON formatında konum bilgisi
[*]Güvenilirlik Değerlendirmesi
  • IP güvenilirlik skoru hesaplama
  • Proxy/VPN kullanım tespiti
  • Cloudflare doğrulama kontrolü
  • Çoklu faktörlü güvenilirlik analizi
[*]Hata Yönetimi
  • Try-catch ile hata yakalama
  • Hata loglama sistemi
  • Boş değer kontrolleri
  • Geçersiz IP kontrolü
[*]Yardımcı Fonksiyonlar
  • IP validasyon fonksiyonları
  • Proxy header kontrolleri
  • IP bilgi toplama
  • Detaylı IP analizi
Örnek ücretsiz api uygulamam: https://hucrem.com/app/ip/