0Pricing
PHP Academy · บทเรียน

GET กับ POST: ควรใช้แต่ละแบบเมื่อใด

ทำความเข้าใจความแตกต่างระหว่าง HTTP GET และ POST ใน PHP

GET กับ POST: ควรใช้แต่ละแบบเมื่อใด เป็นบทเรียน PHP Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน PHP Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

เมธอด HTTP ใน PHP สำหรับเว็บ

เมื่อเบราว์เซอร์ส่งแบบฟอร์ม HTML จะใช้เมธอด HTTP อย่างใดอย่างหนึ่งระหว่าง GET หรือ POST PHP จะรับข้อมูลที่ส่งผ่านตัวแปรสากลพิเศษ:

  • $_GET — ข้อมูลที่ต่อท้าย URL
  • $_POST — ข้อมูลในเนื้อหาคำขอ

เมธอด GET

GET จะต่อข้อมูลแบบฟอร์มเป็นพารามิเตอร์สตริงคำค้นหาของ URL:

<!-- HTML form -->
<form method="GET" action="search.php">
    <input name="query" type="text">
    <button type="submit">Search</button>
</form>

<!-- URL becomes: search.php?query=php+tutorial -->

<?php
$q = $_GET['query'] ?? '';
echo 'You searched for: ' . htmlspecialchars($q);

เมธอด POST

POST ส่งข้อมูลในเนื้อหาคำขอ HTTP ซึ่งจะไม่แสดงใน URL:

<!-- HTML form -->
<form method="POST" action="login.php">
    <input name="email" type="email">
    <input name="password" type="password">
    <button type="submit">Log In</button>
</form>

<?php
$email    = $_POST['email']    ?? '';
$password = $_POST['password'] ?? '';

ควรใช้ GET เมื่อใด

ใช้ GET เมื่อ:

  • คำขอเป็นแบบ ทำซ้ำได้โดยไม่เกิดผลข้างเคียง
  • ข้อมูลสามารถปรากฏใน URL ได้ เช่น คำค้นหา ตัวกรอง และการแบ่งหน้า
  • ต้องการ URL ที่บันทึกเป็นบุ๊กมาร์กหรือแชร์ได้
  • ข้อมูลไม่ใช่ข้อมูลละเอียดอ่อน

ควรใช้ POST เมื่อใด

ใช้ POST เมื่อ:

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

ขีดจำกัดความยาวของ GET

คำขอ GET มีขีดจำกัดความยาวของ URL (โดยทั่วไปประมาณ 2,000 อักขระในการใช้งานจริง) ส่วน POST ไม่มีขีดจำกัดในทางปฏิบัติ นอกจากการตั้งค่าของเซิร์ฟเวอร์:

<?php
// php.ini settings for POST limits:
// post_max_size = 8M   (total POST body size)
// upload_max_filesize = 2M

// Check current limits at runtime:
echo ini_get('post_max_size');        // 8M
echo ini_get('upload_max_filesize');  // 2M

ตัวแปรสากลพิเศษ $_REQUEST

$_REQUEST รวม $_GET, $_POST และ $_COOKIE เข้าด้วยกัน สะดวกแต่ทำให้แหล่งที่มาของข้อมูลไม่ชัดเจนเท่าไร:

<?php
// Works for both GET and POST but is ambiguous
$name = $_REQUEST['name'] ?? '';

// Better: be explicit about the expected method
$name = match($_SERVER['REQUEST_METHOD']) {
    'GET'  => $_GET['name']  ?? '',
    'POST' => $_POST['name'] ?? '',
    default => '',
};

การตรวจสอบเมธอดของคำขอ

ตรวจสอบเมธอดของคำขอก่อนประมวลผลข้อมูลแบบฟอร์มเสมอ:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = trim($_POST['name'] ?? '');
    if (!empty($name)) {
        echo 'Hello, ' . htmlspecialchars($name);
    }
} else {
    // Show empty form
}

HTTPS และความปลอดภัยของข้อมูล

แม้ใช้ POST ข้อมูลก็ยังมองเห็นเป็นข้อความธรรมดาได้ หากไม่ได้ใช้ HTTPS กฎความปลอดภัยสำคัญมีดังนี้:

  • ใช้ HTTPS ในสภาพแวดล้อมจริงเสมอ
  • อย่าส่งรหัสผ่านผ่าน GET
  • POST ผ่าน HTTP ก็ยังไม่ปลอดภัย — HTTPS จะเข้ารหัสเนื้อหาคำขอด้วย

การเปลี่ยนเส้นทางหลัง POST (รูปแบบ PRG)

หลังจาก POST สำเร็จ ให้เปลี่ยนเส้นทางไปยังคำขอ GET เพื่อป้องกันการส่งข้อมูลซ้ำเมื่อรีเฟรช:

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Process the form...
    $id = saveToDatabase($_POST);
    
    // Post-Redirect-Get (PRG) pattern
    header('Location: /success.php?id=' . $id);
    exit;
}

ฟอร์มแบบหลายส่วนสำหรับการอัปโหลดไฟล์

หากต้องการอัปโหลดไฟล์ แบบฟอร์มต้องใช้ enctype="multipart/form-data" ร่วมกับ POST:

<!-- Required for file uploads -->
<form method="POST" action="upload.php"
      enctype="multipart/form-data">
    <input type="file" name="avatar">
    <button type="submit">Upload</button>
</form>

<?php
$file = $_FILES['avatar'];
echo $file['name'];  // original filename

ตรวจสอบอย่างรวดเร็ว

ควรใช้เมธอด HTTP ใดเมื่อส่งแบบฟอร์มเข้าสู่ระบบที่มีชื่อผู้ใช้และรหัสผ่าน

สรุปทบทวน: GET เทียบกับ POST

ความแตกต่างสำคัญ:

  • GET — อยู่ใน URL บันทึกเป็นบุ๊กมาร์กได้ ไม่มีผลข้างเคียง และมีขนาดจำกัด
  • POST — อยู่ในเนื้อหาคำขอ ใช้กับข้อมูลละเอียดอ่อน และไม่มีขีดจำกัดของ URL
  • ใช้ HTTPS เสมอเพื่อปกป้องข้อมูลทั้ง GET และ POST
  • ตรวจสอบ $_SERVER['REQUEST_METHOD'] ก่อนประมวลผล
  • ใช้รูปแบบ PRG เพื่อป้องกันการส่ง POST ซ้ำ

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

บทเรียน “GET กับ POST: ควรใช้แต่ละแบบเมื่อใด” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “GET กับ POST: ควรใช้แต่ละแบบเมื่อใด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส PHP Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส PHP Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “GET กับ POST: ควรใช้แต่ละแบบเมื่อใด”

ทำความเข้าใจความแตกต่างระหว่าง HTTP GET และ POST ใน PHP คุณปฏิบัติ PHP Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน PHP Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน PHP Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “GET กับ POST: ควรใช้แต่ละแบบเมื่อใด” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน PHP Academy นี้ได้ไหม

ได้ บทเรียน PHP Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. GET กับ POST: ควรใช้แต่ละแบบเมื่อใด
  2. การอ่านข้อมูลแบบฟอร์มด้วย Superglobals
  3. เทคนิคการตรวจสอบข้อมูลนำเข้า
  4. การทำความสะอาดข้อมูลนำเข้าจากผู้ใช้
← กลับไปที่ PHP Academy