Кардардын Ipин кантип табууга болот

Мазмуну:

Кардардын Ipин кантип табууга болот
Кардардын Ipин кантип табууга болот

Video: Кардардын Ipин кантип табууга болот

Video: Кардардын Ipин кантип табууга болот
Video: Строительная компания ЭМАКОМ, работа над ошибками. 2024, Апрель
Anonim

Сайтыңызга кирген адамдын IP дареги аркылуу сиз ал жөнүндө көп маалымат таба аласыз - өлкө, шаар, Интернет провайдердин аты жана электрондук почта дареги ж.б. Бирок негизги мааниси - бул IP сервер тарабындагы скрипттер үчүн конок идентификатору катары кызмат кыла алат. Төмөндө PHPди колдонуп IP дарегин кантип аныктоого болору баяндалган.

Кардардын ipин кантип табууга болот
Кардардын ipин кантип табууга болот

Ал зарыл

PHP жөнүндө негизги билим

Нускамалар

1 кадам

IP дарегин браузердин сурам серверине жөнөтүлгөн баш аталыштардан алуу үчүн getenv функциясын колдонуңуз. Ага чөйрөнүн өзгөрүлмө белгилеринен көрсөтүлгөн маанилерди окуйт. REMOTE_ADDR деген өзгөрмө коноктун IP дарегин сактоо үчүн колдонулат. Бирок, кардар прокси-серверди колдоно алат, мындай учурда өзгөрүлмө сиз каалаган даректи эмес, анын дарегин камтыйт. Веб-серфер ортоңку IP колдонуп жаткандыгын HTTP_VIA деп аталган айлана чөйрөнүн өзгөрмөсүн карап билсеңиз болот. Ага чынжырга катышкан бардык прокси-серверлердин даректери үтүр менен бөлүнүп жайгаштырылган. Ортоңку серверлер келүүчүнүн дарегин HTTP_X_FORWARDED_FOR аталышындагы өзгөрмөгө жайгаштырышы керек, бирок бул толугу менен прокси орнотууларынан көз каранды. Бул IP дарегин мүмкүн болушунча көбүрөөк аныктоо мүмкүнчүлүгүн камтуу үчүн, жок дегенде үч өзгөрмөнүн камтылышын текшерүү керек дегенди билдирет: REMOTE_ADDR, HTTP_X_FORWARDED_FOR жана артыкчылыктуу

2-кадам

Сиз үч өзгөрмөңүздүн бардыгын PHP кодунун бир сабына бириктире аласыз, мисалы, төмөнкүдөй:

$ ipAddr = getenv ('HTTP_CLIENT_IP') же $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') же $ ipAddr = getenv ('REMOTE_ADDR');

Ушундай жол менен IP даректин маанисин алгандыктан, аны мүмкүн болгон бурмалоолордон жана керексиз белгилерден тазалоо сунушталат. Бул үчүн туруктуу сөз айкашын колдонсоңуз болот:

$ ipAddr = trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));

3-кадам

Коддун эки сабын тең бир функцияга бириктирүү керек:

getIP () функциясы {

$ ipAddr = getenv ('HTTP_CLIENT_IP') же $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') же $ ipAddr = getenv ('REMOTE_ADDR');

return trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));

}

Сунушталууда: