Таны сайтад зочлогчийн IP хаягаар та түүний тухай, улс орон, хот, интернетийн үйлчилгээ үзүүлэгчийн нэр, имэйл хаяг гэх мэт олон зүйлийг олж мэдэх боломжтой. Гэхдээ гол утга нь IP нь сервер талын скриптүүдийн зочин ID болж чаддагт оршино. PHP ашиглан IP хаягийг хэрхэн тодорхойлж болохыг доор харуулав.
Энэ нь зайлшгүй шаардлагатай
PHP-ийн талаархи анхан шатны мэдлэг
Зааварчилгаа
1-р алхам
Хөтөчийн хүсэлт сервер рүү илгээсэн толгой хэсгээс IP хаягийг задлахын тулд getenv функцийг ашиглана уу. Энэ нь хүрээлэн буй орчны хувьсагчдаас түүнд заасан утгыг уншдаг. REMOTE_ADDR нэртэй хувьсагч нь зочны IP хаягийг хадгалахад ашиглагддаг. Гэхдээ үйлчлүүлэгч прокси сервер ашиглаж болох бөгөөд энэ тохиолдолд хувьсагч нь таны хүссэн хаягийг биш харин хаягийг нь агуулна. Вэб серфер нь завсрын IP ашиглаж байгааг HTTP_VIA хэмээх орчны хувьсагчийг харж олж мэдэх боломжтой. Гинжинд холбогдсон прокси серверийн бүх хаягийг дотор нь таслалаар тусгаарлаж байрлуулна. Завсрын серверүүд зочдын хаягийг HTTP_X_FORWARDED_FOR нэртэй хувьсагч дотор байрлуулах ёстой боловч энэ нь бүрэн прокси тохиргооноос хамаарна. Энэ нь IP хаягийг тодорхойлох аль болох олон боломжийг хамрахын тулд дор хаяж гурван хувьсагчийн агуулгыг шалгах хэрэгтэй гэсэн үг юм: REMOTE_ADDR, HTTP_X_FORWARDED_FOR, болж өгвөл
Алхам 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');
return trim (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}