Сайтка кирген адамдын Ipин кантип табууга болот

Сайтка кирген адамдын Ipин кантип табууга болот
Сайтка кирген адамдын Ipин кантип табууга болот
Anonim

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

Сайтка кирген адамдын ipин кантип табууга болот
Сайтка кирген адамдын ipин кантип табууга болот

Ал зарыл

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

Нускамалар

1 кадам

IP-даректерди суперглобалдык чөйрөнүн өзгөрмө массивинен окуу үчүн PHP орнотулган getenv функциясын колдонуңуз. Жөнөкөй учурда, REMOTE_ADDR аталышындагы өзгөрмөнү окуу жетиштүү болот. Тийиштүү PHP коду төмөнкүдөй болушу мүмкүн: $ userIP = getenv ('REMOTE_ADDR');

2-кадам

Сурамда жиберилген REMOTE_ADDR өзгөрмөсүнөн тышкары, HTTP_VIA жана HTTP_X_FORWARDED_FOR өзгөрмөлөрүн текшериңиз. Эгер конок прокси серверин колдонсо, анда аралыктагы дарек эки өзгөрүлмө - HTTP_VIA да, REMOTE_ADDR да жазылышы керек. Бул учурда, сиз HTTP_X_FORWARDED_FOR аркылуу келген коноктун чыныгы IP дарегин билип алсаңыз болот - прокси сервер ага баштапкы дарегин киргизиши керек. Бирок, бул дайыма эле жасала бербейт жана колдонуучу сурам жөнөткөн коноктун түпнуска IP дарегин өткөрбөй турган "тунук эмес" прокси-серверди тандап алуу мүмкүнчүлүгүнө ээ. Кандай болгон күндө дагы, HTTP_CLIENT_IP өзгөрмөсүн текшерип, кодуңузга баштапкы IP дарегин алуу үчүн мүмкүн болушунча көп ыкмаларды колдонушуңуз керек.

3-кадам

PHP кодунун бир сабына коноктордун баштапкы IP дарегин камтышы мүмкүн болгон үч айлана-чөйрөнүн ырааттуу текшерүүсүн бириктир. Муну, мисалы, жасоого болот: $ userIP = getenv ('HTTP_CLIENT_IP') ЖЕ $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ЖЕ $ userIP = getenv ('REMOTE_ADDR');

4-кадам

Пайда болгон IP маанисинен кошумча символдорду жана башка "таштандыларды" алып салыңыз, алар айлана-чөйрөнүн өзгөрмөлөрүнө кирип кетиши мүмкүн. Бул, мисалы, PHP орнотулган TRIM жана preg_replace функцияларын колдонуу менен жасалышы мүмкүн: $ userIP = TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));

5-кадам

PHP скрипттериңиздин ар кайсы бөлүктөрүндө текшерүү жана тазалоо саптарын кайталабастан, ага шилтеме берүү үчүн, бардык коддорду ыңгайлаштырылган функцияга бириктирип алыңыз. Мисалы, ушул сыяктуу: FUNCTION getUserIP () {

$ userIP = getenv ('HTTP_CLIENT_IP') ЖЕ $ userIP = getenv ('HTTP_X_FORWARDED_FOR') ЖЕ $ userIP = getenv ('REMOTE_ADDR');

RETURN TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));

}

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