Sizning saytingizga tashrif buyuruvchining IP-manzili orqali siz u haqida juda ko'p narsalarni bilib olishingiz mumkin - mamlakat, shahar, Internet-provayderning ismi va elektron pochta manzili va boshqalar. Ammo asosiy qiymat shundaki, IP server tomonidagi skriptlar uchun tashrif buyuruvchi identifikatori sifatida xizmat qilishi mumkin. Quyida PHP yordamida qanday qilib IP-manzilni aniqlash mumkinligi tasvirlangan.
Bu zarur
PHP haqida asosiy ma'lumotlar
Ko'rsatmalar
1-qadam
IP-manzilni brauzer so'rovi serveriga yuborilgan sarlavhalardan ajratib olish uchun getenv funktsiyasidan foydalaning. Unga belgilangan qiymatlarni atrof-muhit o'zgaruvchilaridan o'qiydi. REMOTE_ADDR nomli o'zgaruvchi tashrif buyuruvchining IP-manzilini saqlash uchun ishlatiladi. Biroq, mijoz proksi-serverdan foydalanishi mumkin, bu holda o'zgaruvchida siz xohlagan manzil emas, balki uning manzili bo'ladi. Veb-sörfçü oraliq IP-dan foydalanayotganligini HTTP_VIA deb nomlangan muhit o'zgaruvchisiga qarab bilib olishingiz mumkin. Unda zanjirga aloqador proksi-serverlarning barcha manzillari vergul bilan ajratilgan holda joylashtirilgan. O'rta serverlar tashrif buyuruvchining manzilini HTTP_X_FORWARDED_FOR nomli o'zgaruvchiga joylashtirishi kerak, ammo bu butunlay proksi-server sozlamalariga bog'liq. Bu shuni anglatadiki, IP-manzilni iloji boricha ko'proq aniqlash uchun siz kamida uchta o'zgaruvchining tarkibini tekshirishingiz kerak: REMOTE_ADDR, HTTP_X_FORWARDED_FOR va afzal
2-qadam
Siz uchta o'zgaruvchini tekshirishni bir qatorda PHP kodining bir qatoriga qo'shishingiz mumkin, masalan:
$ ipAddr = getenv ('HTTP_CLIENT_IP') yoki $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') yoki $ ipAddr = getenv ('REMOTE_ADDR');
IP-manzilning qiymatini shu tarzda olganingizdan so'ng, uni mumkin bo'lgan buzilishlardan va keraksiz belgilardan tozalash tavsiya etiladi. Buning uchun odatiy iboradan foydalanishingiz mumkin:
$ ipAddr = trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
3-qadam
Kodning ikkala satrini bitta funktsiyaga birlashtirish qoladi:
funktsiyasi getIP () {
$ ipAddr = getenv ('HTTP_CLIENT_IP') yoki $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') yoki $ ipAddr = getenv ('REMOTE_ADDR');
return trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}