Çoğu zaman, bir site ziyaretçisinin IP adresi onu tanımlamak için kullanılır. Ancak bunun yanı sıra, IP kullanarak ziyaretçi hakkında birçok ek bilgi alabilirsiniz - örneğin, İnternet sağlayıcısını ve coğrafi konumunu öğrenin. Uygulamada, sunucu tarafı PHP betikleri çoğunlukla tarayıcı tarafından gönderilen istek başlıklarından IP adreslerini çıkarmak için kullanılır.

Bu gerekli
Temel PHP bilgisi
Talimatlar
Aşama 1
Süper küresel ortam değişkeni dizisinden IP adreslerini okumak için PHP'nin yerleşik getenv işlevini kullanın. En basit durumda REMOTE_ADDR isimli değişkeni okumanız yeterli olacaktır. PHP kodunun ilgili parçası şöyle görünebilir: $ userIP = getenv ('REMOTE_ADDR');
Adım 2
İstekte gönderilen REMOTE_ADDR değişkenine ek olarak, HTTP_VIA ve HTTP_X_FORWARDED_FOR değişkenlerini kontrol edin. Ziyaretçi bir proxy sunucusu kullanıyorsa, ara adresin hem HTTP_VIA hem de REMOTE_ADDR olmak üzere her iki değişkene de kaydedilmesi gerekir. Bu durumda HTTP_X_FORWARDED_FOR üzerinden ziyaretçinin gerçek IP'sini bulmaya çalışabilirsiniz - proxy sunucusu orijinal adresi buna koymalıdır. Ancak bu her zaman yapılmaz ve kullanıcı, isteği gönderen ziyaretçinin orijinal IP'sini iletmeyen "opak" bir proxy sunucusu seçme fırsatına sahiptir. Her durumda, HTTP_CLIENT_IP değişkeni için bir kontrol ekleyerek kodunuza orijinal IP adresini almak için mümkün olduğunca çok yol kullanmalısınız.
Aşama 3
Bir PHP kodu satırında, ziyaretçinin orijinal IP adresini içerebilen üç ortam değişkeninin sıralı kontrolünü birleştirin. Bu, örneğin şu şekilde yapılabilir: $ userIP = getenv ('HTTP_CLIENT_IP') VEYA $ userIP = getenv ('HTTP_X_FORWARDED_FOR') VEYA $ userIP = getenv ('REMOTE_ADDR');
4. Adım
Ortam değişkenlerine girebilecek IP değerinden fazladan karakterleri ve diğer "çöpleri" kaldırın. Bu, örneğin, yerleşik PHP işlevleri TRIM ve preg_replace kullanılarak yapılabilir: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ kullanıcıIP));
Adım 5
PHP betiklerinizin farklı bölümlerinde kontrol ve temizleme satırlarını defalarca tekrarlamak yerine ona başvurabilmeniz için tüm kodu özel bir işlevde birleştirin. Örneğin, şöyle: FUNCTION getUserIP () {
$ userIP = getenv ('HTTP_CLIENT_IP') VEYA $ userIP = getenv ('HTTP_X_FORWARDED_FOR') VEYA $ userIP = getenv ('REMOTE_ADDR');
DÖNÜŞ TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}