PHP การ superglobals $ _GET และ $ _POST ถูกนำมาใช้ในการเก็บรวบรวมข้อมูลแบบฟอร์ม
PHP - แบบฟอร์ม HTML อย่างง่าย
ตัวอย่างด้านล่างนี้จะแสดงรูปแบบ HTML ง่ายๆด้วยสองช่องใส่และปุ่มส่ง:
ตัวอย่าง
<html>
<body>
<form action="welcome.php" method="post">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
ตัวอย่างเช่นเรียกใช้» เมื่อผู้ใช้กรอกแบบฟอร์มด้านบนและคลิกที่ปุ่มส่งข้อมูลในแบบฟอร์มจะถูกส่งสำหรับการประมวลผลไฟล์ PHP ที่มีชื่อว่า "welcome.php" ข้อมูลจะถูกส่งแบบฟอร์มการด้วยวิธีการ POST HTTP
เพื่อแสดงข้อมูลที่ส่งคุณก็สามารถสะท้อนตัวแปรทั้งหมด "welcome.php" มีลักษณะเช่นนี้
<html>
<body>
Welcome <?php echo $_POST["name"]; ?><br>
Your email address is: <?php echo $_POST["email"]; ?>
</body>
</html>
การส่งออกอาจจะมีบางอย่างเช่นนี้
Welcome John
Your email address is [email protected]
ผลเดียวกันยังสามารถทำได้โดยใช้วิธีการ HTTP GET ไปนี้:
ตัวอย่าง
<html>
<body>
<form action="welcome_get.php" method="get">
Name: <input type="text" name="name"><br>
E-mail: <input type="text" name="email"><br>
<input type="submit">
</form>
</body>
</html>
ตัวอย่างเช่นเรียกใช้» และ "welcome_get.php" มีลักษณะเช่นนี้
<html>
<body>
Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>
</body>
</html>
รหัสข้างต้นจะค่อนข้างง่าย แต่สิ่งที่สำคัญที่สุดคือการขาดหายไป คุณจำเป็นต้องตรวจสอบข้อมูลในแบบฟอร์มเพื่อป้องกันสคริปต์ของคุณจากโค้ดที่เป็นอันตราย
คิดว่าการรักษาความปลอดภัยเมื่อการประมวลผลรูปแบบ PHP!
หน้านี้ไม่ได้มีการตรวจสอบรูปแบบใด ๆ มันก็แสดงให้เห็นว่าคุณสามารถส่งและดึงข้อมูลแบบฟอร์ม
แต่หน้าถัดไปจะแสดงวิธีการที่จะดำเนินการในรูปแบบ PHP กับการรักษาความปลอดภัยในใจ! ตรวจสอบความถูกต้องของข้อมูลรูปแบบเป็นสิ่งสำคัญในการปกป้องแบบฟอร์มของคุณจากแฮกเกอร์และสแปมเมอร์!
ได้รับเมื่อเทียบกับการโพสต์
ทั้ง GET และ POST สร้างอาร์เรย์ (เช่น array( key => value, key2 => value2, key3 => value3, ...) ) อาร์เรย์นี้ถือเป็นคีย์ / คู่ค่าที่คีย์เป็นชื่อของรูปแบบการควบคุมและมีค่าการป้อนข้อมูลจากผู้ใช้
ทั้ง GET และ POST จะถือว่าเป็น $ _GET และ $ _POST เหล่านี้เป็น superglobals ซึ่งหมายความว่าพวกเขาจะสามารถเข้าถึงได้ตลอดเวลาโดยไม่คำนึงถึงขอบเขต - และคุณสามารถเข้าถึงได้จากฟังก์ชั่นใด ๆ ชั้นเรียนหรือไฟล์ได้โดยไม่ต้องทำอะไรเป็นพิเศษ
$ _GET เป็นอาร์เรย์ของตัวแปรส่งผ่านไปยังสคริปต์ปัจจุบันผ่านพารามิเตอร์ URL ที่
$ _POST เป็นอาร์เรย์ของตัวแปรส่งผ่านไปยังสคริปต์ปัจจุบันผ่านทางวิธี HTTP POST ๆ
เมื่อใช้จะได้รับ?
ข้อมูลที่ส่งมาจากรูปแบบที่มีวิธีการ GET ที่มองเห็นได้ทุกคน (ชื่อตัวแปรและค่าทั้งหมดจะแสดงใน URL) ได้รับนอกจากนี้ยังมีข้อ จำกัด เกี่ยวกับจำนวนของข้อมูลที่จะส่ง ข้อ จำกัด ที่เป็นเรื่องเกี่ยวกับ 2000 ตัวอักษร อย่างไรก็ตามเนื่องจากตัวแปรที่จะแสดงใน URL ก็เป็นไปได้ที่คั่นหน้า นี้จะมีประโยชน์ในบางกรณี
GET อาจจะใช้สำหรับการส่งที่ไม่ไวต่อข้อมูล.
Note: GET ไม่ควรนำมาใช้สำหรับการส่งรหัสผ่านหรือข้อมูลสำคัญอื่น ๆ !
เมื่อจะใช้โพสต์?
ข้อมูลที่ส่งมาจากรูปแบบด้วยวิธีการโพสต์จะมองไม่เห็นคนอื่น ๆ (all names/values are embedded within the body of the HTTP request) และมีข้อ จำกัด เกี่ยวกับจำนวนของข้อมูลที่จะส่ง
นอกจากนี้ยังโพสต์สนับสนุนการทำงานขั้นสูงเช่นการสนับสนุนสำหรับการป้อนข้อมูลไบนารีหลายส่วนในขณะที่การอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์
อย่างไรก็ตามเนื่องจากตัวแปรจะไม่แสดงใน URL มันเป็นไปไม่ได้ที่คั่นหน้า
นักพัฒนาต้องการ POST สำหรับการส่งข้อมูลแบบฟอร์ม
ถัดไปให้ดูว่าเราสามารถดำเนินการในรูปแบบ PHP วิธีที่ปลอดภัย!