Ամենից հաճախ կայքի այցելուի IP հասցեն օգտագործվում է նրան նույնացնելու համար: Բայց բացի դրանից, IP- ի օգտագործմամբ, դուք կարող եք շատ լրացուցիչ տեղեկություններ ստանալ այցելուի մասին, օրինակ ՝ պարզել նրա ինտերնետ մատակարարը և աշխարհագրական դիրքը: Գործնականում սերվերային կողմի PHP գրերը առավել հաճախ օգտագործվում են զննարկչի կողմից ուղարկված հարցման վերնագրերից IP հասցեներ հանելու համար:
Դա անհրաժեշտ է
PHP- ի հիմնական գիտելիքներ
Հրահանգներ
Քայլ 1
Օգտագործեք PHP- ի ներկառուցված getenv ֆունկցիան `IP հասցեներ կարդալու գերհամաշխարհային միջավայրի փոփոխական զանգվածից: Ամենապարզ դեպքում բավական կլինի կարդալ 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- ն: Ամեն դեպքում, դուք պետք է օգտագործեք հնարավորինս շատ եղանակներ ձեր կոդի մեջ IP բնօրինակը ստանալու համար ՝ ավելացնելով ստուգում HTTP_CLIENT_IP փոփոխականի համար:
Քայլ 3
PHP կոդի մեկ տողում միացրեք շրջակա միջավայրի երեք փոփոխականների հաջորդական ստուգում, որը կարող է պարունակել այցելուի սկզբնական IP հասցեն: Դա կարող է արվել, օրինակ, հետևյալ կերպ.
Քայլ 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');
ՎԵՐԱԴԱՐՁԻ ԴՐԱՄ (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}