PHP ile Ziyaretçi Gerçek IP adresi Proxy Kullanılsa Dahi Tespit Etmek

P

Bir çok web sitesi ziyaretçilerinin ip adreslerini güvenlik, kullanıcı filtreleme vb. işlemler için ip adresi bilgilerini ya veritabanında tutar ya da doğrudan belli ip bloklarının sitelerine erişimini engeller. Eğer ki sizde ziyaretçilerinizin IP Adresini kontrol etmek istiyorsanız bilmeniz gereken bir şey kaç şey var.

Ortak internet bağlantısı kullanan bilgisayarların IP adresleri ile Proxy üzerinden web sitenize gelen ziyaretçilerin IP adresleri farklı olabilir.

Proxy sunucu; internet üzerindeki yerel bir ağ  ile dış dünya arasındaki ilişkiyi sağlayan köprü görevini üstlenmektedir. Eğer ki kullanıcı internete çıkarken araya proxy sunucu sokuyor ise şunu bilmeniz gerekiyor ki kişi dış dünyaya açılırken kendi  ip adresini değil Proxy sunucunun ip adresini kullanmaktadır. Çoğu kimse Proxy sunucuları kullanarak ip adresinin tespitini zorlaştırmak ve kimliğini gizlemek adına bu yola başvurur. Peki bu durumu ortadan nasıl kaldırabiliriz. Aşağıdaki kod bloğu basitçe PHP ile gerçek ip adresini nasıl öğreniriz bize yol gösteriyor.

<?php
if(!empty($_SERVER["HTTP_CLIENT_IP"]))
{
 //kullanıcı direk olarak mı internete çıkıyor ?
 $ipadresi = $_SERVER["HTTP_CLIENT_IP"];
}
elseif(!empty($_SERVER["HTTP_X_FORWARDED_FOR"]))
{
 // kullanıcı Proxy sunucu mu kullanıyor ?
$ipadresi = $_SERVER["HTTP_X_FORWARDED_FOR"];
}
else
{
$ipadresi = $_SERVER["REMOTE_ADDR"];
}
// Burada kullanıcının gerçek ip adresini yazdırıyoruz,
echo $ipadresi;
?>

Yazar hakkında

Murat Dinç

Bozuktus.com, sistemgereksinimleri.net, klavyer.com sitelerinin kurucusu, muratdinc.com'da kişisel blog yazarı, codex.dincmedya.com.tr coder, seo.muratdinc.com'da SEO uzmanı.

6 yorum

  • Günlerdir bu konu hakkında araştırmalar yapıyordum, gerçekten yararlı bir kod teşekkür ederim.

  • Bu kodu wordpress sitesinde nereye ekleyeceğiz? Mesela ben sadece belli bir sayfama gelen ziyaretçinin IP’sini öğrenmek istiyorsam yazının içinde bir yere mi yerleştirmem lazım yoksa tema kodları içine mi?

    • Bu kod sadece İP adresini tespit emek için oluşturulmuş bir fonksiyon parçası. MSQL’e tablo oluşturarak tespit edilen ip adresini yazdırmak için sadece tespit yapıyor. PHP INSERT, UPDATE kullanarak yapabilirsiniz.

  • Kodu yazıp sayfaya girin yazan IP ye bakın.
    VPN Açıp aynı sayfayı tekrar açın.

    Farklı IP’ler yazıyor.
    VPN Açılınca da aynı IP yazan kod lazım.

    • Bu mümkün değil, sayfaya VPN ile girildiğinde VPN IP’sini görür, ana IP > VPN > Sayfa mantığı geçerli olduğu için VPN arkasına saklanan ana IP’ye ulaşmak bu tür yöntemler ile mümkün olmaz.