ด้วยที่อยู่ IP ของผู้เยี่ยมชมไซต์ของคุณ คุณสามารถหาข้อมูลเกี่ยวกับเขาได้ค่อนข้างมาก - ประเทศ เมือง ชื่อและที่อยู่อีเมลของผู้ให้บริการอินเทอร์เน็ต ฯลฯ แต่คุณค่าหลักคือ IP สามารถทำหน้าที่เป็น ID ผู้เยี่ยมชมสำหรับสคริปต์ฝั่งเซิร์ฟเวอร์ ด้านล่างนี้จะอธิบายวิธีกำหนดที่อยู่ IP โดยใช้ PHP
มันจำเป็น
ความรู้พื้นฐาน 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');
ส่งคืนการตัดแต่ง (preg_replace ('# ^ ([^,] +) (,. *)? #', '$ 1', $ ipAddr));
}