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

Мазмуну:

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

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

Video: Сайтка кирген адамдын Ipин кантип табууга болот
Video: Жин чыгаргандар 100$ арзан кылса болбойбу | Жин кирген адамдын суроосу | Тунук каналы 2024, Май
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));

}

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