Arkadaşlar,
Aşağıdaki PHP fonksiyonuyla kullanıcı sisteme girdiğinde IP'sini
alıyorum ve bir session değişkeninde saklıyorum. Kullanıcı ikinci bir
diğer sayfaya tıkladığında bu fonksiyonu çağırarak tekrar IP'sini
alıyorum ve Session değişkeni ile karşılaştırarak IP'nin değişip
değişmediğini kontrol ediyorum.
Kullanıcılarımın birinde şöyle bir durum oluştu:
getip() fonksiyonu değer doğru bir şekilde IP bilgisini alıyor ve
Session değişkeninde saklıyor (Örnek: 123.123.123)
İkinci bir sayfaya girdiğimde Session değişkeni aynı değeri korurken
(123.123.123.123) getip() fonksiyonum bana şu sonucu döndürüyor:
123.123.123.123, localhost
Bu durumda karşılaştırma yaptığım zaman "123.123.123.123" ==
"123.123.123.123, localhost" aynı olmadığı için hataya düşüyor.
Sorunu tespit ettim ve localhost ifadesini çıkararak çözdüm. Ancak,
getip() fonksiyonunun ilk çalışmasında gelen sonuç ile ikindi bir
sayfada çalıştırdığımda gelen sonucun farklı olmasını anlayabilmiş değilim.
SORULAR:
1.) Sizler böyle bir sorun yaşadınız mı?
2.) aşağıdaki getip() fonksiyonu yerine önerebileceğiniz bir başka şey
olabilir mi?
Selamlar,
Nuri AKMAN
*function getip() {*
if (getenv("HTTP_CLIENT_IP") &&
strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") &&
strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"),
"unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR']
&& strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return($ip);
*} //getip*
_______________________________________________
Linux-programlama mailing list
[email protected]
http://liste.linux.org.tr/mailman/listinfo/linux-programlama