Ихэнх тохиолдолд сайтын зочны 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-г дамжуулдаггүй "тунгалаг бус" прокси серверийг сонгох боломжтой байдаг. Ямар ч тохиолдолд та HTTP_CLIENT_IP хувьсагчийн чекийг нэмж коддоо анхны IP хаягийг оруулахын тулд аль болох олон арга замыг ашиглах хэрэгтэй.
Алхам 3
PHP кодын нэг мөрөнд зочны анхны IP хаягийг агуулсан гурван орчны хувьсагчийн дараалсан шалгалтыг нэгтгэнэ. Жишээлбэл, үүнийг дараах байдлаар хийж болно: $ userIP = getenv ('HTTP_CLIENT_IP') OR $ userIP = getenv ('HTTP_X_FORWARDED_FOR') OR $ 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') OR $ userIP = getenv ('HTTP_X_FORWARDED_FOR') OR $ userIP = getenv ('REMOTE_ADDR');
RETURN TRIM (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ userIP));
}