Ձեր կայքի այցելուի IP հասցեով դուք կարող եք բավականին շատ բան իմանալ նրա մասին ՝ երկիր, քաղաք, ինտերնետ մատակարարի անուն և էլեկտրոնային հասցե և այլն: Բայց հիմնական արժեքն այն է, որ IP- ն կարող է ծառայել որպես այցելուի ID սերվերային կողմի սցենարների համար: Ստորև նկարագրված է, թե ինչպես կարող եք որոշել IP հասցեն ՝ օգտագործելով PHP:
Դա անհրաժեշտ է
PHP- ի հիմնական գիտելիքներ
Հրահանգներ
Քայլ 1
Addressննարկչի հարցման սերվերին ուղարկված վերնագրերից IP հասցեն հանելու համար օգտագործեք getenv գործառույթը: Այն կարդում է իրեն նշված արժեքները շրջակա միջավայրի փոփոխականներից: REMOTE_ADDR անունով փոփոխականն օգտագործվում է այցելուի IP հասցեն պահելու համար: Այնուամենայնիվ, հաճախորդը կարող է օգտագործել վստահված սերվեր, որի դեպքում փոփոխականը պարունակում է իր հասցեն, և ոչ թե այն մեկը, որը ցանկանում եք: Կարող եք իմանալ, որ վեբ սերֆերն օգտագործում է միջանկյալ IP ՝ դիտելով HTTP_VIA կոչվող միջավայրի փոփոխականը: Շղթայում ներգրավված վստահված անձի սերվերների բոլոր հասցեները տեղադրվում են դրա մեջ `բաժանված ստորակետներով: Միջանկյալ սերվերները պետք է այցելուի հասցեն տեղադրեն HTTP_X_FORWARDED_FOR անունով փոփոխականում, բայց դա ամբողջովին կախված է վստահված անձի կարգավորումներից: Սա նշանակում է, որ IP հասցեն որոշելու հնարավորինս շատ հնարավորություններ ընդգրկելու համար հարկավոր է ստուգել առնվազն երեք փոփոխականների ՝ REMOTE_ADDR, HTTP_X_FORWARDED_FOR և գերադասելի HTTP_CLIENT_IP բովանդակությունը:
Քայլ 2
Բոլոր երեք փոփոխականությունները ստուգելով կարող եք միավորել PHP կոդի մեկ տողի մեջ, օրինակ ՝ այսպես.
$ ipAddr = getenv ('HTTP_CLIENT_IP') կամ $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') կամ $ ipAddr = getenv ('REMOTE_ADDR');
Այս եղանակով IP հասցեի արժեքը ձեռք բերելով, ցանկալի է այն մաքրել հնարավոր աղավաղումներից և ավելորդ նիշերից: Դրա համար կարող եք օգտագործել կանոնավոր արտահայտություն.
$ ipAddr = լրամշակում (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
Քայլ 3
Մնում է կոդի երկու տողերը միավորել մեկ գործառույթի մեջ.
գործառույթ getIP () {
$ ipAddr = getenv ('HTTP_CLIENT_IP') կամ $ ipAddr = getenv ('HTTP_X_FORWARDED_FOR') կամ $ ipAddr = getenv ('REMOTE_ADDR');
վերադարձի լրամշակում (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}