PHP Academy · บทเรียน

การอ่านข้อมูลแบบฟอร์มด้วย Superglobals

เข้าถึงฟิลด์ในแบบฟอร์มผ่านอาร์เรย์ _GET และ _POST

บทเรียน 2 จาก 413 ขั้นตอน

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

ตัวแปรสากลพิเศษของ PHP

ตัวแปรสากลพิเศษ คืออาร์เรย์ในตัวของ PHP ที่พร้อมใช้งานในทุกขอบเขต คุณไม่จำเป็นต้องใช้ global เพื่อเข้าถึงตัวแปรเหล่านี้ในฟังก์ชัน

ตัวแปรสากลพิเศษที่เกี่ยวข้องกับแบบฟอร์ม: $_GET, $_POST, $_FILES, $_REQUEST

การเข้าถึงฟิลด์ $_POST

อ่านค่าจากแบบฟอร์ม POST โดยเข้าถึงค่าด้วยคีย์อาร์เรย์และกำหนดค่าทดแทนเริ่มต้น:

<?php
// Safe access with null coalescing
$username = $_POST['username'] ?? '';
$email    = $_POST['email']    ?? '';
$age      = (int) ($_POST['age'] ?? 0);

var_dump($username, $email, $age);

การเข้าถึงพารามิเตอร์ $_GET

อ่านพารามิเตอร์สตริงคำค้นหาของ URL จาก $_GET:

<?php
// URL: /products.php?category=electronics&page=2&sort=price

$category = $_GET['category'] ?? 'all';
$page     = max(1, (int) ($_GET['page'] ?? 1));
$sort     = in_array($_GET['sort'] ?? '', ['price', 'name', 'date'])
            ? $_GET['sort']
            : 'name';

echo "Category: $category, Page: $page, Sort: $sort";

การจัดการช่องทำเครื่องหมาย

ช่องทำเครื่องหมายที่ไม่ได้เลือกจะ NOT ถูกส่งมาเสมอ ให้ตรวจสอบด้วย isset หรือ ??:

<?php
// HTML: <input type="checkbox" name="newsletter">

$wantsNewsletter = isset($_POST['newsletter']);
// or:
$wantsNewsletter = ($_POST['newsletter'] ?? null) !== null;

echo $wantsNewsletter ? 'Subscribed' : 'Not subscribed';

อาร์เรย์ของการเลือกหลายค่าและช่องทำเครื่องหมาย

ใช้แอตทริบิวต์ name ในรูปแบบอาร์เรย์เพื่อรวบรวมหลายค่า:

<!-- HTML -->
<!-- <input type="checkbox" name="tags[]" value="php"> -->
<!-- <input type="checkbox" name="tags[]" value="mysql"> -->

<?php
$tags = $_POST['tags'] ?? [];

if (!is_array($tags)) $tags = [];

foreach ($tags as $tag) {
    echo htmlspecialchars($tag) . PHP_EOL;
}

ข้อมูล $_SERVER

$_SERVER ให้ข้อมูลสภาพแวดล้อมของเซิร์ฟเวอร์และคำขอ:

<?php
echo $_SERVER['REQUEST_METHOD'];   // GET or POST
echo $_SERVER['REQUEST_URI'];       // /page.php?foo=bar
echo $_SERVER['HTTP_HOST'];         // example.com
echo $_SERVER['REMOTE_ADDR'];       // client IP
echo $_SERVER['HTTP_USER_AGENT'];   // browser string

filter_input()

filter_input() อ่านและทำความสะอาดค่าจากตัวแปรสากลพิเศษได้ในขั้นตอนเดียว:

<?php
// Retrieve and validate an integer from POST
$age = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_INT);
if ($age === false) {
    echo 'Invalid age';
}

// Retrieve and sanitize a string from GET
$name = filter_input(INPUT_GET, 'name', FILTER_SANITIZE_SPECIAL_CHARS);
echo $name;

filter_var() สำหรับการตรวจสอบความถูกต้อง

ตรวจสอบความถูกต้องและทำความสะอาดค่าที่มีอยู่ในตัวแปรแล้ว:

<?php
$email = 'user@example.com';
$ip    = '192.168.1.1';
$url   = 'https://example.com';

var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));  // string
var_dump(filter_var($ip,    FILTER_VALIDATE_IP));     // string
var_dump(filter_var($url,   FILTER_VALIDATE_URL));    // string

FILTER_SANITIZE เทียบกับ FILTER_VALIDATE

โหมดของ filter_var มีสองแบบ:

  • FILTER_VALIDATE_* — ส่งคืนค่าหากถูกต้อง และส่งคืน false หากไม่ถูกต้อง
  • FILTER_SANITIZE_* — ลบหรือเข้ารหัสอักขระอันตราย แล้วส่งคืนค่าที่สะอาด

การจัดการ $_FILES

$_FILES มีข้อมูลเมตาของไฟล์ที่อัปโหลด โดยแต่ละไฟล์มีคีย์ห้าคีย์:

<?php
if (isset($_FILES['avatar'])) {
    $file = $_FILES['avatar'];
    
    echo $file['name'];     // original filename: photo.jpg
    echo $file['type'];     // MIME type: image/jpeg
    echo $file['size'];     // bytes: 45231
    echo $file['tmp_name']; // temp path on server
    echo $file['error'];    // 0 = no error
}

รูปแบบการประมวลผลทั้งแบบฟอร์ม

รูปแบบที่เป็นระเบียบสำหรับจัดการการส่งแบบฟอร์มพร้อมการตรวจสอบความถูกต้อง:

<?php
$errors = [];
$name   = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = trim($_POST['name'] ?? '');
    if (empty($name)) {
        $errors[] = 'Name is required';
    }
    if (empty($errors)) {
        // process...
        header('Location: /thanks.php');
        exit;
    }
}

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

ช่องทำเครื่องหมายที่ไม่ได้เลือกจะส่งอะไรไปยังเซิร์ฟเวอร์ PHP

สรุปทบทวน: ตัวแปรสากลพิเศษ

ตัวแปรสากลพิเศษที่สำคัญสำหรับแบบฟอร์ม:

  • $_GET — พารามิเตอร์ URL
  • $_POST — เนื้อหาคำขอ
  • $_FILES — ข้อมูลไฟล์ที่อัปโหลด
  • $_SERVER — สภาพแวดล้อมของเซิร์ฟเวอร์และคำขอ
  • ใช้ ?? เพื่อเข้าถึงค่าทดแทนอย่างปลอดภัย
  • ใช้ filter_input() เพื่อดึงข้อมูลและตรวจสอบความถูกต้องในขั้นตอนเดียว
เริ่มต้นได้ฟรี

เรียนรู้ PHP ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
49
บทเรียน
195

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

บทเรียน “การอ่านข้อมูลแบบฟอร์มด้วย Superglobals” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การอ่านข้อมูลแบบฟอร์มด้วย Superglobals”

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

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

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

บทเรียน “การอ่านข้อมูลแบบฟอร์มด้วย Superglobals” ใช้เวลานานแค่ไหน

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

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

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

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

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