CloudFlare’dan Gelen IP leri Görmek

Güvenlik amaçlı olarak DNS proxy serverlar kullanılmaktadır. Populer olanlardan bir tanesi ise CloudFlare.

CloudFlare veya benzer bir sistem kullanıyorsanız PROXY sebebi ile gelen IP leri göremeyebilirsiniz. Kullanılan sistem ile sizin sunucunuz arasındaki PROXY IP lerini görürsünüz. Gerçek kullanıcı / ziyaretçi IP lerini göremeyebilirsiniz. Kullanıcı IP ( her ne kadar gerçek orası tartışılır 🙂 ) bilgisini PHP üzerinden header / server bilgisi ile aşağıda paylaştığım kod parçacığı ile alabilirsiniz.

IP bilgisini almak ne için gereklidir diye soruyorsanız, her sistemin kendine özgü analiz ve raporlama sistemleri vardır. IP bazlı reklamlardan tutun, yurt içi / yurt dışı  olup olmadığını anlamak için IP bilgisine bir nebze olsun ihtiyacımız / nız vardır.

Codeigniter ile Düzeltilmiş Kod Parçası ( Input Sınıfı )  :

//
//$this->ip_address = $_SERVER['REMOTE_ADDR'];
 $this->ip_address = (isset($_SERVER["HTTP_CF_CONNECTING_IP"])?$_SERVER["HTTP_CF_CONNECTING_IP"]:$_SERVER['REMOTE_ADDR']);

// veya 
$this->ip_address = $_SERVER[ 'REMOTE_ADDR' ]; // default olarak atanır
if( isset( $_SERVER[ "HTTP_CF_CONNECTING_IP" ] ) ) // değişiklik varsa kullanılır.
	$this->ip_address = $_SERVER[ "HTTP_CF_CONNECTING_IP" ];

//

Native Script’ler için :

//
$_SERVER['REMOTE_ADDR'] = (isset($_SERVER["HTTP_CF_CONNECTING_IP"])?$_SERVER["HTTP_CF_CONNECTING_IP"]:$_SERVER['REMOTE_ADDR']);

// veya
if( isset( $_SERVER[ 'HTTP_CF_CONNECTING_IP' ] ) )
	$_SERVER['REMOTE_ADDR'] = $_SERVER[ 'HTTP_CF_CONNECTING_IP' ];

//

Ufak bir araştırma ile uzun uğraşlar verip çözemediğim bir konuydu.
Proxy sistemlerinde SERVER değişkeni KEY değeri farklı olabilir.

Bir Cevap Yazın