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

Cevap