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/