การจัดการฟอร์มใน PHP เป็นส่วนสำคัญของการพัฒนาเว็บที่ช่วยให้เราสามารถรับข้อมูลจากผู้ใช้ เช่น การกรอกชื่อ อีเมล หรือรหัสผ่าน โดยข้อมูลเหล่านี้จะถูกส่งไปยังเซิร์ฟเวอร์ผ่าน HTTP requests ซึ่งใน PHP มีการจัดการข้อมูลเหล่านี้ด้วย superglobals ที่ชื่อว่า $_GET และ $_POST
รูปแบบการส่งข้อมูลใน PHP
ฟอร์มสามารถส่งข้อมูลได้สองรูปแบบหลัก คือ GET และ POST ซึ่งแต่ละแบบก็จะมีข้อดีและข้อจำกัดที่แตกต่างกัน
GET เป็นรูปแบบการส่งข้อมูลแบบพื้นฐาน (default) ซึ่งข้อมูลที่ส่งผ่าน GET จะถูกแนบไปกับ URL ของเบราว์เซอร์ เช่น ?key=value ข้อมูลที่ส่งผ่านวิธีนี้จะสามารถมองเห็นได้ใน URL ของเบราว์เซอร์ จึงมีความปลอดภัยต่ำ และปริมาณข้อมูลที่ส่งได้มีจำกัด
ตัวอย่าง: รับข้อมูลจากฟอร์มแบบ GET
Copy < form action = " welcome.php " method = " get " >
Name: < input type = " text " name = " name " />
< input type = " submit " value = " visit " />
</ form >
ไฟล์: welcome.php
เมื่อผู้ใช้กรอกข้อมูลแล้วกด submit ข้อมูลจะถูกส่งไปยัง welcome.php ผ่าน URL เช่น: name = JJ
ข้อดีและข้อเสียของการใช้ GET
ข้อดี
ข้อมูลถูกส่งผ่าน URL ทำให้สามารถบุ๊กมาร์กหรือแชร์ลิงก์ได้
สามารถตรวจสอบค่าตัวแปรได้ง่ายผ่าน URL
ข้อเสีย
ความปลอดภัยต่ำ ข้อมูลสำคัญเช่น รหัสผ่านสามารถเห็นได้ชัดเจน
จำกัดขนาดข้อมูลที่ส่ง (ประมาณ 2000 ตัวอักษร)
2. PHP POST Form (การส่งข้อมูลผ่าน POST)
POST เป็นวิธีที่นิยมมากกว่าในการส่งข้อมูลที่มีปริมาณมาก หรือข้อมูลที่เป็นความลับ เช่น การส่งรหัสผ่าน การลงทะเบียนผู้ใช้ หรือการอัปโหลดไฟล์ ข้อมูลที่ส่งผ่าน POST จะไม่ปรากฏใน URL ซึ่งทำให้มีความปลอดภัยสูงกว่าการใช้ GET
ตัวอย่าง: รับข้อมูลจากฟอร์มแบบ POST
ไฟล์: welcome.php
ในตัวอย่างนี้ เมื่อผู้ใช้กรอกชื่อและรหัสผ่านในฟอร์มแล้วกดปุ่ม submit ข้อมูลจะถูกส่งไปที่ login.php ผ่าน POST ซึ่งข้อมูลจะถูกซ่อนไว้ใน request body และไม่ปรากฏใน URL
ข้อดีของและข้อเสียของการใช้ POST
ข้อดี
ข้อมูลจะไม่ปรากฏใน URL มีความปลอดภัยสูงกว่าการใช้ GET
เหมาะสำหรับ ข้อมูลส่วนตัว หรือ รหัสผ่าน
ข้อเสีย
ไม่สามารถบุ๊กมาร์กหรือแชร์ลิงก์ที่ส่งข้อมูลผ่าน POST ได้
การตรวจสอบค่าตัวแปรต้องใช้เครื่องมือพิเศษ
ไม่สามารถบุ๊กมาร์กได้เพราะข้อมูลที่ส่งผ่าน POST จะไม่แสดงใน URL เมื่อเราบุ๊กมาร์กหรือนำลิงก์ไปเปิดใหม่ ข้อมูลที่เคยส่งจะไม่ถูกส่งไปด้วย ต้องส่งข้อมูลใหม่ทุกครั้งเมื่อมีการโหลดหน้าเว็บ
การส่งข้อมูลผ่านฟอร์มด้วย JavaScript คือการส่งข้อมูลที่เรากรอกในฟอร์มไปยังเซิร์ฟเวอร์เพื่อให้เซิร์ฟเวอร์ทำการประมวลผล เช่น การบันทึกข้อมูลลงฐานข้อมูล โดยปกติแล้ว การส่งข้อมูลผ่านฟอร์มใน HTML แบบปกติจะทำให้หน้าเว็บรีเฟรชหลังจากส่งฟอร์ม แต่ถ้าใช้ JavaScript เราสามารถส่งข้อมูลโดยที่ไม่ต้องรีเฟรชหน้าเว็บได้
ตัวอย่างการส่งข้อมูลใน JavaScript
คือการบอกให้ฟอร์มรอการส่งข้อมูล (submit) เมื่อกดปุ่มส่งฟอร์ม ฟังก์ชันที่อยู่ข้างในจะถูกเรียกใช้งาน โดยใช้ event.preventDefault() จะหยุดการรีเฟรชหน้านั้น ทำให้เราสามารถตรวจสอบข้อมูลที่กรอกในฟอร์มก่อน จากนั้นเราสามารถเขียนโค้ดให้ตรวจสอบข้อมูลที่ผู้ใช้กรอกหรือทำอย่างอื่นก่อนส่งฟอร์มไปที่เซิร์ฟเวอร์ได้ เช่น แสดงข้อความเตือนถ้ากรอกข้อมูลไม่ครบ
เปรียบเทียบแบบเข้าใจง่ายระหว่าง PHP กับ JavaScript
ประมวลผลหลังจากส่งฟอร์มไปที่เซิร์ฟเวอร์
ประมวลผลข้อมูลในเบราว์เซอร์ทันที
หน้าเว็บต้องรีเฟรชใหม่เมื่อส่งฟอร์ม
ไม่ต้องรีเฟรชหน้าเว็บ ทำงานได้เร็ว
ปลอดภัยกว่า เนื่องจากข้อมูลถูกส่งไปที่เซิร์ฟเวอร์
ไม่ปลอดภัยเท่าฝั่งเซิร์ฟเวอร์ ต้องตรวจสอบอีกครั้งที่เซิร์ฟเวอร์
ใช้ได้เสมอ แม้ผู้ใช้ปิดการทำงาน JavaScript
ต้องเปิดการใช้งาน JavaScript ในเบราว์เซอร์
เหมาะสำหรับการประมวลผลข้อมูลที่ซับซ้อน
เหมาะสำหรับการตรวจสอบข้อมูลง่าย ๆ
แหล่งข้อมูลที่ใช้อ้างอิง
"PHP Form." Javatpoint , n.d. Web. 12 Oct. 2024. https://www.javatpoint.com/php-formarrow-up-right .
"PHP Forms." W3Schools , n.d. Web. 12 Oct. 2024. https://www.w3schools.com/php/php_forms.asparrow-up-right .
"PHP Form Handling." TutorialsPoint , n.d. Web. 12 Oct. 2024. https://www.tutorialspoint.com/php/php_form_handling.htmarrow-up-right .
"JavaScript DOM Forms." CodingDrills, n.d. Web. 13 Oct. 2024. https://www.codingdrills.com/tutorial/javascript-tutorial/dom-formsarrow-up-right .
"JavaScript Form Validation." W3Schools, n.d. Web. 13 Oct. 2024. https://www.w3schools.com/js/js_validation.asparrow-up-right
"JavaScript Form." JavaScript Tutorial , n.d. Web. 15 Oct. 2024. https://www.javascripttutorial.net/javascript-dom/javascript-form/arrow-up-right .