การจัดการแบบฟอร์ม PHP
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" ข้อมูลแบบฟอร์มถูกส่งด้วยวิธี HTTP POST
ในการแสดงข้อมูลที่ส่งมา คุณสามารถสะท้อนตัวแปรทั้งหมดได้ "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
ทั้ง GET และ POST สร้างอาร์เรย์ (เช่น array( key1 => value1, key2 => value2, key3 => value3, ...)) อาร์เรย์นี้เก็บคู่คีย์/ค่า โดยที่คีย์คือชื่อของตัวควบคุมฟอร์ม และค่าเป็นข้อมูลอินพุตจากผู้ใช้
ทั้ง GET และ POST ถือเป็น $_GET และ $_POST สิ่งเหล่านี้คือ superglobal ซึ่งหมายความว่าสามารถเข้าถึงได้เสมอโดยไม่คำนึงถึงขอบเขต และคุณสามารถเข้าถึงได้จากฟังก์ชัน คลาส หรือไฟล์ใดๆ โดยไม่ต้องทำอะไรเป็นพิเศษ
$_GET คืออาร์เรย์ของตัวแปรที่ส่งผ่านไปยังสคริปต์ปัจจุบันผ่านพารามิเตอร์ URL
$_POST คืออาร์เรย์ของตัวแปรที่ส่งผ่านไปยังสคริปต์ปัจจุบันผ่านเมธอด HTTP POST
ควรใช้ GET เมื่อใด
ข้อมูลที่ส่งจากแบบฟอร์มด้วยเมธอด GET จะปรากฏแก่ทุกคน (ชื่อตัวแปรและค่าทั้งหมดจะแสดงใน URL) GET ยังมีข้อจำกัดเกี่ยวกับปริมาณข้อมูลที่จะส่ง ข้อจำกัดคือประมาณ 2,000 อักขระ อย่างไรก็ตาม เนื่องจากตัวแปรแสดงอยู่ใน URL จึงสามารถคั่นหน้าได้ อาจมีประโยชน์ในบางกรณี
GET อาจใช้เพื่อส่งข้อมูลที่ไม่ละเอียดอ่อน
หมายเหตุ:ไม่ควรใช้ GET เพื่อส่งรหัสผ่านหรือข้อมูลที่ละเอียดอ่อนอื่น ๆ !
ควรใช้ POST เมื่อใด
ข้อมูลที่ส่งจากแบบฟอร์มด้วยวิธี POST จะไม่ปรากฏแก่ผู้อื่น (ชื่อ/ค่าทั้งหมดถูกฝังอยู่ภายในเนื้อหาของคำขอ HTTP) และไม่จำกัดจำนวนข้อมูลที่จะส่ง
นอกจากนี้ POST ยังรองรับการทำงานขั้นสูง เช่น รองรับอินพุตไบนารีหลายส่วนขณะอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์
อย่างไรก็ตาม เนื่องจากตัวแปรไม่แสดงใน URL จึงไม่สามารถบุ๊กมาร์กหน้าได้
นักพัฒนาต้องการ POST สำหรับการส่งข้อมูลแบบฟอร์ม
ต่อไป มาดูกันว่าเราจะสามารถประมวลผล PHP ในรูปแบบที่ปลอดภัยได้อย่างไร!