PHP Superglobal ตัวแปรและ Register_Globals
PHP มีตัวแปรชนิดพิเศษที่เรียกว่า superglobal เหตุผลที่ตัวแปรเหล่านี้มีความพิเศษคือเพราะพวกเขาสามารถใช้งานโปรแกรม PHP ใด ๆ โดยอัตโนมัติโดยที่โปรแกรมเมอร์ไม่ได้สร้างหรือกำหนดไว้ในโปรแกรมของเขา คุณสามารถคิดว่ามันเป็นตัวแปร "ในตัว"

วิธีที่คุณจะเข้าถึงตัวแปรเหล่านี้แตกต่างกันขึ้นอยู่กับว่า register_globals เปิดหรือปิดบนเซิร์ฟเวอร์ของคุณ ก่อน PHP เวอร์ชัน 4.2 จะเปิด register_globals ตามค่าเริ่มต้น อย่างไรก็ตามเพื่อเหตุผลด้านความปลอดภัย การตั้งค่านี้จะถูกปิดโดยปริยาย (เวอร์ชั่น 4.2+) แน่นอนว่าขึ้นอยู่กับผู้ที่ใช้งานเซิร์ฟเวอร์ของคุณเพื่อตัดสินใจว่าจะแทนที่การตั้งค่าเริ่มต้นและเปิดใช้งาน register_globals วิธีที่ง่ายที่สุดในการทดสอบเซิร์ฟเวอร์ของคุณคือใช้ phpinfo () คุณอาจจะมีลิงค์ไปยังหน้าเว็บนี้ในพื้นที่การดูแลของเว็บไซต์ของคุณ ในหน้านี้คุณจะพบส่วนการกำหนดค่า PHP Core ที่มีข้อมูลนี้

ดังกล่าวข้างต้นคุณจะเข้าถึง superglobals แตกต่างกันขึ้นอยู่กับการตั้งค่าเซิร์ฟเวอร์ของคุณ สำหรับการตั้งค่าเซิร์ฟเวอร์ใหม่ superglobals จะได้รับชื่อใหม่ หากเซิร์ฟเวอร์ของคุณยังคงมีการตั้งค่าเก่ามันจะเป็นการดีกว่าถ้าคุณเริ่มใช้ชื่อใหม่ หากคุณใช้ชื่อใหม่เหล่านี้คุณสามารถมั่นใจได้ว่าโปรแกรมของคุณจะทำงานภายใต้การกำหนดค่าเซิร์ฟเวอร์ทั้งสอง อย่างไรก็ตามนี่ไม่ใช่กรณีสำหรับชื่อเก่า พวกเขาจะทำงานสำหรับการกำหนดค่าเซิร์ฟเวอร์เก่าเท่านั้น แผนภูมิด้านล่างแสดงชื่อเก่าและใหม่และคำอธิบายของ superglobals ขอให้สังเกตว่าชื่อของ superglobals เหล่านี้อยู่ในตัวพิมพ์ใหญ่ทั้งหมด

ใหม่เก่าลักษณะ
$ _GET $ HTTP_GET_VARS superglobal นี้มีตัวแปรที่ส่งไปยังโปรแกรมโดยวิธีการรับเช่นสตริง guery
$ _POST $ HTTP_POST_VARS superglobal นี้มีตัวแปรที่ส่งไปยังโปรแกรมโดยวิธีการโพสต์
$ _COOKIE $ HTTP_COOKIE_VARS superglobal นี้มีตัวแปรที่มีให้โปรแกรมจากคุกกี้
$ _SESSION $ HTTP_SESSION_VARS superglobal นี้มีตัวแปรที่ลงทะเบียนโดยโปรแกรมผ่านเซสชั่น
$ _FILES $ HTTP_POST_FILES superglobal นี้มีตัวแปรที่พร้อมใช้งานจากการอัปโหลดไฟล์
$ _ENV $ _HTTP_ENV_VARS superglobal นี้มีตัวแปรที่พร้อมใช้งานจากสภาพแวดล้อมเซิร์ฟเวอร์
$ _REQUEST -- superglobal นี้มีตัวแปรที่ส่งไปยังโปรแกรมโดยอินพุตของผู้ใช้ทุกชนิด นี่คือ superglobal ประเภททั่วไปหรือสากลที่สุด
$ _SERVER -- superglobal นี้มีข้อมูลเกี่ยวกับเซิร์ฟเวอร์เช่นเส้นทางของไฟล์