lostyazilim
tr.link

PHP Ip alma yardım!

7 Mesajlar 1.138 Okunma
acebozum
tr.link

oguzhaner oguzhaner WM Aracı Kullanıcı
  • Üyelik 13.12.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Web/Desktop Coder
  • Konum İstanbul Avrupa
  • Ad Soyad O** E**
  • Mesajlar 210
  • Beğeniler 20 / 20
  • Ticaret 3, (%100)
Bu günlerde forumda çok sık konu açıyorum umarım başıma bir iş gelmez :)

Arkadaşlar şimdi benim şöyle bir problemim var.
Üyenin gerçek ip yani modeminin ip adresini almam gerekiyor. Bazı özel sitelerde olduğu gibi.
Nette araştırdım aşağıda ki fonksiyondan bahsediyorlar hep.

function GetIP(){
if(getenv("HTTP_CLIENT_IP")) {
$ip = getenv("HTTP_CLIENT_IP");
} elseif(getenv("HTTP_X_FORWARDED_FOR")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
if (strstr($ip, ',')) {
$tmp = explode (',', $ip);
$ip = trim($tmp[0]);
}
} else {
$ip = getenv("REMOTE_ADDR");
}
return $ip;
}
$ip_adresi = GetIP();
if (empty($ip_adresi)){
exit ("IP adresiniz alınamadı!");
}else{
echo "IP Adresiniz: $ip_adresi";}


Buraya kadar sıkıntı yok. ip adresimi görebiliyorum fakat, proxyleri aktif ettiğim zaman bu ip adresi proxy adresiyle değişiyor. Sistemin bunu fark edip uyarmasını istiyorum.
Yine internette proxy adresini görmek için
$_SERVER['REMOTE_ADDR'];
komutunu buldum. Buradan yola çıkarak
if ($ip_adresi != $proxy)
echo "Proxy'leri devre dışı bırakın!";

Diye yazdım. Ama dediğim gibi sıkıntı proxy aktif edilince gerçek ip'nin proxy ile değişiyor olması. Bunu nasıl gerçekleştirebilirim ya da daha basit bir yolu varsa anlatırsanız sevinirim lakin ilk yazdığım komuttan hiç bir şey anlamış değilim.
 

 

wmaraci
reklam

fubia fubia Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 17.05.2014
  • Yaş/Cinsiyet 35 / E
  • Meslek Webmaster
  • Konum İzmir
  • Ad Soyad K** Ç**
  • Mesajlar 209
  • Beğeniler 15 / 56
  • Ticaret 4, (%100)
Hocam zaten proxynin amaci bu :)
 

 

oguzhaner oguzhaner WM Aracı Kullanıcı
  • Üyelik 13.12.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Web/Desktop Coder
  • Konum İstanbul Avrupa
  • Ad Soyad O** E**
  • Mesajlar 210
  • Beğeniler 20 / 20
  • Ticaret 3, (%100)

fubia adlı üyeden alıntı

Hocam zaten proxynin amaci bu :)

Nasıl yani?
 

 

fubia fubia Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 17.05.2014
  • Yaş/Cinsiyet 35 / E
  • Meslek Webmaster
  • Konum İzmir
  • Ad Soyad K** Ç**
  • Mesajlar 209
  • Beğeniler 15 / 56
  • Ticaret 4, (%100)
Proxy ile yüklenen bir sayfada eski ip adresini görememeniz normal yani. Çünkü php istemcisi kodları baştan aşağı tarar ve işlemleri döndürür. Sayfa yüklendiğinde işlem biter. Eğer proxy aktif ederseniz ve sayfayı yenilerseniz, eski sonuca bakmaksızın yeni işlemlere başlar. Ancak bir veritabanı bağlantısı, cookie veya session ile eski verilerinizi kontrol edebilirsiniz.
 

 

wmaraci
wmaraci

Flawless Flawless Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 25.10.2013
  • Yaş/Cinsiyet 41 / E
  • Meslek Php Coder
  • Konum Antalya
  • Ad Soyad K** I**
  • Mesajlar 476
  • Beğeniler 22 / 87
  • Ticaret 7, (%100)

function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //proxy kullanmıyorsa alacagın ip
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //proxy kullanıyorsa çekeceği ip adresi
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}



açıklamalara yazdım gerçi ama anlatayım yukardaki fonksiyon ile high+k olmayan proxylere ait ip adresini alırsın ancak yüksek korumalı özel proxylerde http_x_forwarded_for kısmı da boş olacağından alacağın değer gene proxy adresi olacaktır.umarım anlatabilmişimdir.Sorun olursa yazarsın cevaplarım.
oguzhaner

kişi bu mesajı beğendi.

oguzhaner oguzhaner WM Aracı Kullanıcı
  • Üyelik 13.12.2013
  • Yaş/Cinsiyet 30 / E
  • Meslek Web/Desktop Coder
  • Konum İstanbul Avrupa
  • Ad Soyad O** E**
  • Mesajlar 210
  • Beğeniler 20 / 20
  • Ticaret 3, (%100)

Flawless adlı üyeden alıntı


function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //proxy kullanmıyorsa alacagın ip
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //proxy kullanıyorsa çekeceği ip adresi
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}



açıklamalara yazdım gerçi ama anlatayım yukardaki fonksiyon ile high+k olmayan proxylere ait ip adresini alırsın ancak yüksek korumalı özel proxylerde http_x_forwarded_for kısmı da boş olacağından alacağın değer gene proxy adresi olacaktır.umarım anlatabilmişimdir.Sorun olursa yazarsın cevaplarım.


Gayet iyi anlattınız hıcam. Teşekkür ederim. Fakat peki ben şunu nasıl yapabilirim:
Kullanıcı üye girişi yaptığında bir post ekranı ile karşılaşacak eğer oradan örneğin mesaj gönderirken ip adresini o yazmadan alabilmem gerek ve bu ip adresi proxy olmamalı.

$ip_adresi = $ip;

function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP'])) //proxy kullanmıyorsa alacagın ip
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) //proxy kullanıyorsa çekeceği ip adresi
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;

$ip_adresi = $_POST["ip"];
$sorgu = mysql_query("insert into tablo_Adi (ipadress) values ('$ip_adresi')");
}


Şu anda deneyebilme imkanım yok ama yukarıda ki gibi yaparsam benim ip adresimi mi gösterir yine, yoksa formu dolduran kişinin mi?
 

 

Flawless Flawless Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 25.10.2013
  • Yaş/Cinsiyet 41 / E
  • Meslek Php Coder
  • Konum Antalya
  • Ad Soyad K** I**
  • Mesajlar 476
  • Beğeniler 22 / 87
  • Ticaret 7, (%100)
yukarıda verdiğim fonksiyonu db baglantısı yaptıgın config.php dosyana ekle
ondan sonra post yapacagın alanda önce ip değişkenine atayın sonra diyerek gizli bir input yaratarak value alanına fonksiyonun verdiği ip adresini atayın buradan post ettiğiniz bilgileri çektiğiniz yerde $ip=$_Post["ip"]; şeklinde posttan gelen datayı cekip veritabanınıza yazdırabilir yada ne istiyorsanız onu yapabilirsiniz.tabi tüm bunları yapmadan önce post edeceğiniz sayfaya fonkisyonun ekli oldugu config sayfasını include etmeniz gerekir
 

 

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)