แบบฟอร์มลงทะเบียน PHP โดยใช้ GET วิธี POST พร้อมตัวอย่าง
แบบฟอร์มคืออะไร?
เมื่อคุณเข้าสู่ระบบในเว็บไซต์หรือกล่องจดหมายของคุณ คุณกำลังโต้ตอบกับแบบฟอร์ม
แบบฟอร์มจะใช้เพื่อรับข้อมูลจากผู้ใช้และส่งไปยังเว็บเซิร์ฟเวอร์เพื่อดำเนินการ
แผนภาพด้านล่างแสดงกระบวนการจัดการแบบฟอร์ม
แบบฟอร์มคือแท็ก HTML ที่ประกอบด้วยรายการอินเทอร์เฟซผู้ใช้แบบกราฟิก เช่น ช่องป้อนข้อมูล ช่องกาเครื่องหมาย ปุ่มตัวเลือก ฯลฯ
แบบฟอร์มถูกกำหนดโดยใช้ - แท็กและรายการ GUI ถูกกำหนดโดยใช้องค์ประกอบของฟอร์ม เช่น อินพุต
เราใช้แบบฟอร์มเมื่อใดและเพราะเหตุใด
- แบบฟอร์มมีประโยชน์เมื่อพัฒนาแอปพลิเคชันที่ยืดหยุ่นและไดนามิกซึ่งยอมรับการป้อนข้อมูลของผู้ใช้
- สามารถใช้แบบฟอร์มเพื่อแก้ไขข้อมูลที่มีอยู่แล้วจากฐานข้อมูลได้
สร้างแบบฟอร์ม
เราจะใช้แท็ก 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 ปลายทางและประเภทการส่ง
- ชื่อ/นามสกุล: เป็นป้ายกำกับสำหรับช่องป้อนข้อมูล
- คือแท็กกล่องอินพุต
- คือแท็กบรรทัดใหม่
- เป็นค่าที่ซ่อนอยู่ที่ใช้ในการตรวจสอบว่าได้ส่งแบบฟอร์มแล้วหรือไม่
- เป็นปุ่มที่เมื่อคลิกแล้วจะส่งแบบฟอร์มไปยังเซิร์ฟเวอร์เพื่อประมวลผล
การส่งข้อมูลแบบฟอร์มไปยังเซิร์ฟเวอร์
คุณลักษณะการดำเนินการของแบบฟอร์มระบุ URL การส่งที่ประมวลผลข้อมูล แอตทริบิวต์ method ระบุประเภทการส่ง
วิธีการ PHP POST
- นี่คือตัวแปรอาร์เรย์ซูเปอร์โกลบอล PHP ในตัวที่ใช้เพื่อรับค่าที่ส่งผ่านวิธี HTTP POST
- ตัวแปรอาร์เรย์สามารถเข้าถึงได้จากสคริปต์ใดๆ ในโปรแกรม มันมีขอบเขตทั่วโลก
- วิธีนี้เหมาะที่สุดเมื่อคุณไม่ต้องการแสดงค่าการโพสต์แบบฟอร์มใน URL
- ตัวอย่างที่ดีของการใช้วิธีการโพสต์คือเมื่อส่งรายละเอียดการเข้าสู่ระบบไปยังเซิร์ฟเวอร์
มีรูปแบบประโยคดังนี้
<?php $_POST['variable_name']; ?>
ที่นี่
- “$_POST[…]” คือไฟล์ อาร์เรย์ PHP
- “'variable_name'” คือชื่อตัวแปร URL
วิธีการ PHP GET
- นี่คือตัวแปรอาร์เรย์ซูเปอร์โกลบอล PHP ในตัวที่ใช้เพื่อรับค่าที่ส่งผ่านวิธี HTTP GET
- ตัวแปรอาร์เรย์สามารถเข้าถึงได้จากสคริปต์ใดๆ ในโปรแกรม มันมีขอบเขตทั่วโลก
- วิธีการนี้จะแสดงค่าแบบฟอร์มใน URL
- เหมาะอย่างยิ่งสำหรับแบบฟอร์มเครื่องมือค้นหาเนื่องจากช่วยให้ผู้ใช้สามารถบุ๊กมาร์กผลลัพธ์ได้
มีรูปแบบประโยคดังนี้
<?php $_GET['variable_name']; ?>
ที่นี่
- “$_GET[…]” คืออาร์เรย์ PHP
- “'variable_name'” คือชื่อตัวแปร URL
GET เทียบกับวิธี POST
POST | GET |
---|---|
ค่าไม่ปรากฏใน URL | ค่าที่มองเห็นได้ใน URL |
ไม่จำกัดความยาวของค่าเนื่องจากถูกส่งผ่านเนื้อหาของ HTTP | มีข้อจำกัดเกี่ยวกับความยาวของค่า โดยปกติคือ 255 อักขระ เนื่องจากค่าจะแสดงอยู่ใน URL โปรดทราบว่าขีดจำกัดบนของอักขระจะขึ้นอยู่กับเบราว์เซอร์ |
มีประสิทธิภาพต่ำกว่าเมื่อเปรียบเทียบกับวิธี Php_GET เนื่องจากเวลาที่ใช้ในการห่อหุ้มค่า Php_POST ในส่วนเนื้อหา HTTP | มีประสิทธิภาพสูงเมื่อเทียบกับวิธี POST เนื่องจากลักษณะที่เรียบง่ายของการต่อท้ายค่าใน URL |
รองรับข้อมูลหลายประเภท เช่น สตริง ตัวเลข ไบนารี ฯลฯ | รองรับเฉพาะข้อมูลชนิดสตริงเท่านั้นเนื่องจากค่าจะแสดงอยู่ใน URL |
ไม่สามารถทำเครื่องหมายผลลัพธ์ไว้ในสมุดบัญชีได้ | สามารถบันทึกผลลัพธ์ได้เนื่องจากมองเห็นค่าใน URL ได้ |
แผนภาพด้านล่างแสดงความแตกต่างระหว่างการรับและโพสต์
กำลังประมวลผลข้อมูลแบบฟอร์มการลงทะเบียน
แบบฟอร์มลงทะเบียนส่งข้อมูลถึงตัวเองตามที่ระบุไว้ในแอตทริบิวต์การดำเนินการของแบบฟอร์ม
เมื่อส่งแบบฟอร์มแล้ว ค่าต่างๆ จะถูกเติมลงในอาร์เรย์ซูเปอร์โกลบอล $_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="/th/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>
ที่นี่
-
ตรวจสอบว่ากรอกแบบฟอร์มที่ซ่อนไว้ในฟิลด์ $_POST[] แล้วหรือยัง และแสดงข้อความขอบคุณและชื่อจริง
ถ้ายังไม่ได้กรอกข้อมูลในฟิลด์ form_fobmitted ลงในอาร์เรย์ $_POST[] ฟอร์มจะถูกแสดง
ตัวอย่างเพิ่มเติม
เครื่องมือค้นหาที่เรียบง่าย
เราจะออกแบบเครื่องมือค้นหาอย่างง่ายที่ใช้วิธี PHP_GET เป็นประเภทการส่งแบบฟอร์ม
เพื่อความเรียบง่าย เราจะใช้ a 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="/th/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="/th/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>
ดูแบบฟอร์มด้านบนในเบราว์เซอร์
กรอกชื่อและนามสกุล
โปรดทราบว่าไม่ได้เลือกช่องกาเครื่องหมายยอมรับข้อกำหนดในการให้บริการ
คลิกที่ปุ่มส่ง
คุณจะได้รับผลลัพธ์ดังต่อไปนี้
คลิกกลับไปที่ลิงก์แบบฟอร์มแล้วเลือกช่องกาเครื่องหมาย
คลิกที่ปุ่มส่ง
คุณจะได้รับผลลัพธ์ดังต่อไปนี้
สรุป
- แบบฟอร์มจะใช้เพื่อรับข้อมูลจากผู้ใช้
- แบบฟอร์มถูกสร้างขึ้นโดยใช้แท็ก HTML
- สามารถส่งแบบฟอร์มไปยังเซิร์ฟเวอร์เพื่อประมวลผลโดยใช้วิธี POST หรือ GET
- ค่าแบบฟอร์มที่ส่งผ่านวิธี POST จะถูกห่อหุ้มไว้ในเนื้อหา HTTP
- ค่าแบบฟอร์มที่ส่งผ่านวิธี GET จะถูกผนวกและแสดงใน URL