Sitenize gelen bir ziyaretçinin IP adresiyle, onun hakkında oldukça fazla şey öğrenebilirsiniz - ülke, şehir, İnternet sağlayıcısının adı ve e-posta adresi vb. Ancak asıl değer, IP'nin sunucu tarafı komut dosyaları için bir ziyaretçi kimliği olarak hizmet edebilmesidir. PHP kullanarak IP adresini nasıl belirleyeceğiniz aşağıda açıklanmıştır.
Bu gerekli
Temel PHP bilgisi
Talimatlar
Aşama 1
IP adresini tarayıcı istek sunucusuna gönderilen başlıklardan çıkarmak için getenv işlevini kullanın. Ortam değişkenlerinden kendisine belirtilen değerleri okur. Ziyaretçinin IP adresini saklamak için REMOTE_ADDR adlı bir değişken kullanılır. Ancak, istemci bir proxy sunucusu kullanabilir, bu durumda değişken istediğiniz adresi değil onun adresini içerecektir. HTTP_VIA adlı ortam değişkenine bakarak web sörfçünün bir ara IP kullandığını öğrenebilirsiniz. Zincire dahil olan proxy sunucularının tüm adresleri, virgülle ayrılmış olarak buna yerleştirilir. Ara sunucular, ziyaretçinin adresini HTTP_X_FORWARDED_FOR adlı bir değişkene yerleştirmelidir, ancak bu tamamen proxy ayarlarına bağlıdır. Bu, IP adresini belirlemenin mümkün olduğu kadar çok olasılığını kapsamak için en az üç değişkenin içeriğini kontrol etmeniz gerektiği anlamına gelir: REMOTE_ADDR, HTTP_X_FORWARDED_FOR ve tercihen
Adım 2
Üç değişkeni de kontrol etmeyi tek bir PHP kodu satırında birleştirebilirsiniz, örneğin şöyle:
$ ipAddr = getenv ('HTTP_CLIENT_IP') veya $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') veya $ ipAddr = getenv ('REMOTE_ADDR');
IP adresinin değerini bu şekilde elde ettikten sonra, olası bozulmalardan ve gereksiz karakterlerden temizlemeniz önerilir. Bunun için normal bir ifade kullanabilirsiniz:
$ ipAddr = trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
Aşama 3
Her iki kod satırını tek bir işlevde birleştirmek için kalır:
işlev getIP() {
$ ipAddr = getenv ('HTTP_CLIENT_IP') veya $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') veya $ ipAddr = getenv ('REMOTE_ADDR');
dönüş trimi (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}