แบบฟอร์มลงทะเบียน PHP โดยใช้ GET วิธี POST พร้อมตัวอย่าง

⚡ สรุปอย่างชาญฉลาด

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

  • 📝 แบบฟอร์มต่างๆ ทำหน้าที่อะไรบ้าง: แบบฟอร์ม HTML รวบรวมข้อมูลจากผู้ใช้ผ่านช่องต่างๆ เช่น กล่องข้อความ ช่องทำเครื่องหมาย และปุ่ม จากนั้นส่งข้อมูลไปยังสคริปต์บนเซิร์ฟเวอร์
  • 📬 วิธีการโพสต์: $_POST ส่งค่าต่างๆ ในส่วนเนื้อหาของ HTTP keeping พวกเขาออกจาก URLซึ่งเหมาะสำหรับระบบล็อกอินและข้อมูลที่ละเอียดอ่อน
  • 🔗 รับวิธี: $_GET เพิ่มค่าลงใน URLเพื่อให้สามารถบันทึกผลลัพธ์ไว้ได้ ซึ่งเหมาะอย่างยิ่งสำหรับแบบฟอร์มค้นหา
  • 🇧🇷 POST เทียบกับ GET: คำสั่ง POST ไม่มีข้อจำกัดด้านความยาวในทางปฏิบัติและรองรับประเภทข้อมูลหลายประเภท ในขณะที่คำสั่ง GET สั้นกว่า รองรับเฉพาะสตริง และแสดงผลให้เห็นได้ชัดเจน
  • ✅ กำลังประมวลผลข้อมูลเข้า: ฟังก์ชัน isset() จะตรวจสอบว่าฟิลด์นั้นถูกส่งมาแล้วหรือไม่ ก่อนที่สคริปต์จะอ่านและใช้ค่าของฟิลด์นั้น
  • ☑️ ช่องทำเครื่องหมาย: ช่องทำเครื่องหมายจะส่งค่าก็ต่อเมื่อถูกเลือกเท่านั้น ดังนั้น isset() จึงเป็นการยืนยันว่าผู้ใช้เห็นด้วยหรือเลือกตัวเลือกนั้นหรือไม่
  • 🤖 AI ช่วยเหลือ: เครื่องมือ AI สามารถสร้างแบบฟอร์มที่ผ่านการตรวจสอบและมีความปลอดภัย รวมถึงช่วยวิเคราะห์สาเหตุที่แบบฟอร์มส่งไม่ถูกต้องได้

การจัดการฟอร์ม PHP

แบบฟอร์มคืออะไร?

เมื่อคุณล็อกอินเข้าเว็บไซต์หรือเข้ากล่องจดหมาย คุณกำลังโต้ตอบกับแบบฟอร์มอยู่

แบบฟอร์มจะใช้เพื่อรับข้อมูลจากผู้ใช้และส่งไปยังเว็บเซิร์ฟเวอร์เพื่อดำเนินการ

แผนภาพด้านล่างแสดงกระบวนการจัดการแบบฟอร์ม

แบบฟอร์ม PHP

ฟอร์ม คือแท็ก 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

GET เทียบกับวิธี POST

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>

ดูแบบฟอร์มด้านบนในเบราว์เซอร์

การทำงานกับกล่องกาเครื่องหมายและปุ่มตัวเลือก

กรุณากรอกชื่อและนามสกุล

โปรดทราบว่าไม่ได้เลือกช่องกาเครื่องหมายยอมรับข้อกำหนดในการให้บริการ

คลิกที่ปุ่มส่ง

คุณจะได้รับผลลัพธ์ดังต่อไปนี้

การทำงานกับกล่องกาเครื่องหมายและปุ่มตัวเลือก

คลิกที่ลิงก์ "กลับไปยังแบบฟอร์ม" จากนั้นเลือกช่องทำเครื่องหมาย

การทำงานกับกล่องกาเครื่องหมายและปุ่มตัวเลือก

คลิกที่ปุ่มส่ง

คุณจะได้รับผลลัพธ์ดังต่อไปนี้

การทำงานกับกล่องกาเครื่องหมายและปุ่มตัวเลือก

คำถามที่พบบ่อย

$_GET อ่านค่าจาก URL สตริงคำค้นหา, $_POST จะอ่านค่าจากส่วนเนื้อหาของคำขอ และ $_REQUEST จะรวมข้อมูลจาก GET, POST และคุกกี้ ควรใช้รูปแบบอาร์เรย์ที่เฉพาะเจาะจงเพื่อให้ทราบได้อย่างแน่ชัดว่าค่าแต่ละค่ามาจากที่ใด

อย่าเชื่อถือข้อมูลที่ป้อนเข้ามาโดยตรง ตรวจสอบความถูกต้องด้วย filter_var() หรือกฎสำหรับแต่ละฟิลด์ และใช้ htmlspecialchars() เพื่อป้องกัน XSS ใช้ prepared statements สำหรับการเขียนข้อมูลลงฐานข้อมูลเพื่อป้องกัน SQL injection

สาเหตุทั่วไป ได้แก่ การใช้เมธอด GET แทน POST ในฟอร์ม, การขาดแอตทริบิวต์ name ในอินพุต หรือการเลือก action ที่ไม่ถูกต้อง URLหรืออาจขาด enctype แบบ multipart สำหรับการอัปโหลดไฟล์ ตรวจสอบสิ่งเหล่านี้กับแบบฟอร์มของคุณ

ใช่แล้ว AI สามารถสร้างแบบฟอร์ม HTML พร้อมการตรวจสอบความถูกต้องฝั่งเซิร์ฟเวอร์ การป้องกัน CSRF และการแสดงผลที่เข้ารหัสได้ Revตรวจสอบกฎสำหรับแต่ละฟิลด์และยืนยันว่าการตรวจสอบความปลอดภัยตรงกับแอปพลิเคชันของคุณก่อนที่จะทำการติดตั้งใช้งาน

ใช่แล้ว แชร์แบบฟอร์มและตัวจัดการ แล้ว AI จะสามารถตรวจจับความไม่ตรงกันของวิธีการ คุณลักษณะชื่อที่หายไป เส้นทางการดำเนินการที่ไม่ถูกต้อง หรือเงื่อนไขการตรวจสอบที่ขัดขวางการส่งข้อมูล จากนั้นจะแนะนำวิธีแก้ไข

สรุปโพสต์นี้ด้วย: