แบบฟอร์มลงทะเบียน PHP โดยใช้ GET วิธี POST พร้อมตัวอย่าง
⚡ สรุปอย่างชาญฉลาด
การจัดการฟอร์มใน PHP จะรับข้อมูลจากฟอร์ม HTML และประมวลผลบนเซิร์ฟเวอร์ผ่านตัวแปรซูเปอร์โกลบอล $_POST และ $_GET บทแนะนำนี้จะสร้างฟอร์มลงทะเบียน อธิบายวิธีการ POST และ GET เปรียบเทียบทั้งสองวิธี และแสดงวิธีการประมวลผลฟิลด์ ช่องทำเครื่องหมาย และข้อมูลการค้นหา

แบบฟอร์มคืออะไร?
เมื่อคุณล็อกอินเข้าเว็บไซต์หรือเข้ากล่องจดหมาย คุณกำลังโต้ตอบกับแบบฟอร์มอยู่
แบบฟอร์มจะใช้เพื่อรับข้อมูลจากผู้ใช้และส่งไปยังเว็บเซิร์ฟเวอร์เพื่อดำเนินการ
แผนภาพด้านล่างแสดงกระบวนการจัดการแบบฟอร์ม
ฟอร์ม คือแท็ก HTML ที่ประกอบด้วยองค์ประกอบส่วนติดต่อผู้ใช้แบบกราฟิก เช่น ช่องป้อนข้อมูล ช่องทำเครื่องหมาย ปุ่มตัวเลือก และอื่นๆ
รูปแบบถูกกำหนดโดยใช้ … แท็กและองค์ประกอบ GUI ถูกกำหนดโดยใช้ส่วนประกอบของฟอร์ม เช่น ช่องป้อนข้อมูล
เราใช้แบบฟอร์มเมื่อใดและเพราะเหตุใด
- แบบฟอร์มมีประโยชน์มากเมื่อต้องการพัฒนา...ping แอปพลิเคชันที่มีความยืดหยุ่นและปรับเปลี่ยนได้ตามต้องการ ซึ่งรับข้อมูลจากผู้ใช้
- สามารถใช้แบบฟอร์มเพื่อแก้ไขข้อมูลที่มีอยู่แล้วในฐานข้อมูลได้
สร้างแบบฟอร์ม
เราจะใช้แท็ก HTML เพื่อสร้างแบบฟอร์ม ด้านล่างนี้เป็นรายการขั้นต่ำที่คุณต้องใช้ในการสร้างแบบฟอร์ม
- การเปิดและปิดแท็กแบบฟอร์ม -
- การส่งแบบฟอร์มประเภท POST หรือ GET
- การยอม URL ซึ่งจะประมวลผลข้อมูลที่ส่งเข้ามา
- ช่องป้อนข้อมูล เช่น กล่องป้อนข้อมูล ช่องข้อความ ปุ่ม ช่องทำเครื่องหมาย และอื่นๆ ที่คล้ายกัน
โค้ดด้านล่างนี้สร้างแบบฟอร์มลงทะเบียนอย่างง่าย
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <h2>Registration Form</h2> <form action="registration_form.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> </body> </html>
การดูโค้ดข้างต้นในเว็บเบราว์เซอร์จะแสดงแบบฟอร์มต่อไปนี้
ที่นี่
- - เป็นแท็กแบบฟอร์มเปิดและปิด
- action=”registration_form.php” method=”POST” ระบุปลายทาง URL และประเภทการส่งเอกสาร
- ชื่อ/นามสกุล: เป็นป้ายกำกับสำหรับช่องป้อนข้อมูล
- คือแท็กกล่องอินพุต
- คือแท็กบรรทัดใหม่
- เป็นค่าที่ซ่อนอยู่ที่ใช้ในการตรวจสอบว่าได้ส่งแบบฟอร์มแล้วหรือไม่
- คือปุ่มที่เมื่อคลิกแล้ว จะส่งแบบฟอร์มไปยังเซิร์ฟเวอร์เพื่อประมวลผล
การส่งข้อมูลแบบฟอร์มไปยังเซิร์ฟเวอร์
คุณลักษณะ action ของแบบฟอร์มระบุการส่งข้อมูล URL ซึ่งเป็นกระบวนการประมวลผลข้อมูล คุณลักษณะ method ระบุประเภทการส่งข้อมูล
วิธีการ PHP POST
- นี่คือตัวแปรอาร์เรย์ซูเปอร์โกลบอลในตัวของ PHP ที่ใช้รับค่าที่ส่งผ่านวิธีการ HTTP POST
- ตัวแปรอาร์เรย์สามารถเข้าถึงได้จากสคริปต์ใดๆ ในโปรแกรม มันมีขอบเขตทั่วโลก
- วิธีนี้เหมาะอย่างยิ่งเมื่อคุณไม่ต้องการแสดงค่าที่ส่งมาจากฟอร์มในหน้าเว็บ URL.
- ตัวอย่างที่ดีของการใช้เมธอด POST คือการส่งข้อมูลการเข้าสู่ระบบไปยังเซิร์ฟเวอร์
มีรูปแบบประโยคดังนี้
<?php
$_POST['variable_name'];
?>
ที่นี่
- “$_POST[…]” คือไฟล์ อาร์เรย์ PHP
- “'variable_name'” คือชื่อของฟิลด์ในแบบฟอร์ม
วิธีการ PHP GET
- นี่คือตัวแปรอาร์เรย์ซูเปอร์โกลบอลในตัวของ PHP ซึ่งใช้สำหรับรับค่าที่ส่งผ่านวิธีการ HTTP GET
- ตัวแปรอาร์เรย์สามารถเข้าถึงได้จากสคริปต์ใดๆ ในโปรแกรม มันมีขอบเขตทั่วโลก
- วิธีนี้จะแสดงค่าของแบบฟอร์มใน URL.
- เหมาะอย่างยิ่งสำหรับแบบฟอร์มค้นหาของเครื่องมือค้นหา เนื่องจากช่วยให้ผู้ใช้สามารถบุ๊กมาร์กผลการค้นหาได้
มีรูปแบบประโยคดังนี้
<?php
$_GET['variable_name'];
?>
ที่นี่
- “$_GET[…]” คืออาร์เรย์ PHP
- “'variable_name'” คือ URL ชื่อตัวแปร
GET เทียบกับวิธี POST
| POST | GET |
|---|---|
| ค่าที่ไม่ปรากฏใน URL | ค่าที่มองเห็นได้ใน URL |
| ไม่มีข้อจำกัดเรื่องความยาวของค่า เนื่องจากค่าเหล่านั้นถูกส่งผ่านทางเนื้อหาของคำขอ HTTP | มีข้อจำกัดเรื่องความยาวของค่า โดยปกติคือ 255 ตัวอักษร เนื่องจากค่าเหล่านั้นจะถูกแสดงใน URLโปรดทราบว่าจำนวนอักขระสูงสุดนั้นขึ้นอยู่กับเบราว์เซอร์ |
| มีประสิทธิภาพต่ำกว่าเมื่อเทียบกับวิธี GET เนื่องจากใช้เวลานานในการห่อหุ้มค่า POST ไว้ในส่วนเนื้อหาของ HTTP | มีประสิทธิภาพสูงกว่าเมื่อเทียบกับวิธี POST เนื่องจากมีความเรียบง่ายในการเพิ่มค่าเข้าไป URL. |
| รองรับประเภทข้อมูลที่หลากหลาย เช่น สตริง ตัวเลข เลขฐานสอง และอื่นๆ | รองรับเฉพาะข้อมูลประเภทสตริงเท่านั้น เนื่องจากค่าต่างๆ จะถูกแสดงใน URL |
| ไม่สามารถบันทึกผลลัพธ์เป็นบุ๊กมาร์กได้ | สามารถบุ๊กมาร์กผลลัพธ์ได้เนื่องจากค่าต่างๆ ปรากฏให้เห็นชัดเจน URL |
แผนภาพด้านล่างแสดงความแตกต่างระหว่าง GET และ POST
กำลังประมวลผลข้อมูลแบบฟอร์มการลงทะเบียน
แบบฟอร์มลงทะเบียนส่งข้อมูลถึงตัวเองตามที่ระบุไว้ในแอตทริบิวต์การดำเนินการของแบบฟอร์ม
เมื่อส่งแบบฟอร์มแล้ว ค่าต่างๆ จะถูกบันทึกไว้ในอาร์เรย์ซูเปอร์โกลบอล $_POST
เราจะใช้ฟังก์ชัน PHP isset เพื่อตรวจสอบว่ามีการกรอกค่าแบบฟอร์มในอาร์เรย์ $_POST และประมวลผลข้อมูลหรือไม่
เราจะแก้ไขแบบฟอร์มลงทะเบียนเพื่อเพิ่มโค้ด PHP สำหรับประมวลผลข้อมูล โค้ดที่แก้ไขแล้วอยู่ด้านล่าง
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_POST['form_submitted'])): ?> // this code is executed when the form is submitted <h2>Thank You <?php echo $_POST['firstname']; ?> </h2> <p>You have been registered as <?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?> </p> <p>Go <a href="/registration_form.php">back</a> to the form</p> <?php else: ?> <h2>Registration Form</h2> <form action="registration_form.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
ที่นี่
- ตรวจสอบว่าฟิลด์ซ่อน form_submitted ในอาร์เรย์ $_POST[] ถูกกรอกข้อมูลแล้วหรือไม่ และแสดงข้อความขอบคุณและชื่อจริง หากฟิลด์ form_submitted ในอาร์เรย์ $_POST[] ไม่ได้ถูกกรอกข้อมูล จะแสดงแบบฟอร์มขึ้นมา
ตัวอย่างเพิ่มเติม
เครื่องมือค้นหาที่เรียบง่าย
เราจะออกแบบเครื่องมือค้นหาอย่างง่ายที่ใช้เมธอด GET ของ PHP เป็นประเภทการส่งแบบฟอร์ม
เพื่อความเรียบง่าย เราจะใช้ a คำสั่ง if ของ PHP เพื่อกำหนดผลลัพธ์
เราจะใช้โค้ด HTML เดียวกันสำหรับแบบฟอร์มลงทะเบียนด้านบนและทำการแก้ไขเพียงเล็กน้อย
<html> <head> <title>Simple Search Engine</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_GET['form_submitted'])): ?> <h2>Search Results For <?php echo $_GET['search_term']; ?> </h2> <?php if ($_GET['search_term'] == "GET"): ?> <p>The GET method displays its values in the URL</p> <?php else: ?> <p>Sorry, no matches found for your search term</p> <?php endif; ?> <p>Go <a href="/search_engine.php">back</a> to the form</p> <?php else: ?> <h2>Simple Search Engine - Type in GET </h2> <form action="search_engine.php" method="GET"> Search Term: <input type="text" name="search_term"> <br> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
ดูหน้าเว็บด้านบนในเว็บเบราว์เซอร์
แบบฟอร์มต่อไปนี้จะปรากฏขึ้น
พิมพ์คำว่า GET ด้วยตัวพิมพ์ใหญ่ทั้งหมด แล้วคลิกปุ่มส่ง
สิ่งต่อไปนี้จะปรากฏให้เห็น
แผนภาพด้านล่างแสดงให้เห็น URL สำหรับผลลัพธ์ข้างต้น
หมายเหตุ URL ได้แสดงค่าของ search_term และ form_submitted แล้ว ลองป้อนคำอื่นที่ไม่ใช่ GET แล้วคลิกปุ่มส่ง จากนั้นดูว่าได้ผลลัพธ์อะไรบ้าง
การทำงานกับกล่องกาเครื่องหมาย ปุ่มตัวเลือก
หากผู้ใช้ไม่ได้เลือกช่องทำเครื่องหมายหรือปุ่มตัวเลือก จะไม่มีการส่งค่าใดๆ หากผู้ใช้เลือกช่องทำเครื่องหมายหรือปุ่มตัวเลือก ค่าหนึ่ง (1) หรือค่าจริงจะถูกส่งไป
เราจะแก้ไขรหัสแบบฟอร์มการลงทะเบียนและรวมปุ่มกาเครื่องหมายที่อนุญาตให้ผู้ใช้ยอมรับข้อกำหนดในการให้บริการ
<html> <head> <title>Registration Form</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <?php if (isset($_POST['form_submitted'])): ?> <?php if (!isset($_POST['agree'])): ?> <p>You have not accepted our terms of service</p> <?php else: ?> <h2>Thank You <?php echo $_POST['firstname']; ?></h2> <p>You have been registered as <?php echo $_POST['firstname'] . ' ' . $_POST['lastname']; ?> </p> <p> Go <a href="/registration_form2.php">back</a> to the form</p> <?php endif; ?> <?php else: ?> <h2>Registration Form</h2> <form action="registration_form2.php" method="POST"> First name: <input type="text" name="firstname"> <br> Last name: <input type="text" name="lastname"> <br> Agree to Terms of Service: <input type="checkbox" name="agree"> <br> <input type="hidden" name="form_submitted" value="1" /> <input type="submit" value="Submit"> </form> <?php endif; ?> </body> </html>
ดูแบบฟอร์มด้านบนในเบราว์เซอร์
กรุณากรอกชื่อและนามสกุล
โปรดทราบว่าไม่ได้เลือกช่องกาเครื่องหมายยอมรับข้อกำหนดในการให้บริการ
คลิกที่ปุ่มส่ง
คุณจะได้รับผลลัพธ์ดังต่อไปนี้
คลิกที่ลิงก์ "กลับไปยังแบบฟอร์ม" จากนั้นเลือกช่องทำเครื่องหมาย
คลิกที่ปุ่มส่ง
คุณจะได้รับผลลัพธ์ดังต่อไปนี้










