ยินดีต้อนรับ!
ขอต้อนรับเข้าสู่สื่อการเรียนรู้การเขียนโปรแกรมด้วยภาษา PHP โปรดเลือกหน่วยการเรียนรู้จากเมนูด้านซ้ายเพื่อเริ่มต้น หรือลองใช้เครื่องมือ AI ช่วยเรียนรู้ และทำแบบทดสอบท้ายหน่วย!
เครื่องมืออธิบายโค้ด PHP ✨
วางโค้ด PHP ที่คุณต้องการทำความเข้าใจลงในช่องด้านล่าง แล้วคลิกปุ่มเพื่อรับคำอธิบายจาก AI
หน่วยที่ 1: ความรู้พื้นฐานเกี่ยวกับหลักการเขียนพีเอชพี
หน่วยนี้จะแนะนำความรู้พื้นฐานที่จำเป็นสำหรับการเริ่มต้นเขียนโปรแกรมด้วยภาษา PHP ซึ่งเป็นภาษา Script ที่ทำงานฝั่งเซิร์ฟเวอร์ (Server-Side Scripting) ที่ได้รับความนิยมอย่างสูงในการพัฒนาเว็บไซต์และเว็บแอปพลิเคชัน
1.1 การติดตั้ง PHP
การที่จะเริ่มเขียน PHP ได้นั้น เครื่องคอมพิวเตอร์ของเราจะต้องมี PHP Interpreter และ Web Server ติดตั้งอยู่ วิธีที่นิยมสำหรับผู้เริ่มต้นคือการใช้โปรแกรมจำลอง Web Server แบบครบวงจร (All-in-One Package) ซึ่งจะรวมส่วนประกอบที่จำเป็นมาให้แล้ว:
- XAMPP: เป็นโปรแกรมที่ได้รับความนิยมสูง ประกอบด้วย Apache (Web Server), MariaDB (Database Server, เดิมคือ MySQL), PHP, และ Perl สามารถติดตั้งได้บน Windows, macOS, และ Linux
- ส่วนประกอบหลักของ XAMPP:
- Apache: ทำหน้าที่เป็น Web Server คอยรับคำขอ (request) จากเบราว์เซอร์และส่งผลลัพธ์ (response) กลับไป
- PHP: ตัวแปลภาษา PHP ที่จะประมวลผลโค้ด PHP ของเรา
- MariaDB/MySQL: ระบบจัดการฐานข้อมูล สำหรับเก็บข้อมูลของเว็บไซต์
- XAMPP Control Panel: โปรแกรมสำหรับควบคุมการเริ่ม/หยุดการทำงานของ Apache และ MySQL
- การตรวจสอบการทำงาน: หลังจากติดตั้ง XAMPP และเปิด Apache Web Server แล้ว โดยทั่วไปสามารถทดสอบได้โดยการเปิดเบราว์เซอร์แล้วไปที่
http://localhost
หรือhttp://127.0.0.1
หากเห็นหน้าจอเริ่มต้นของ XAMPP แสดงว่า Web Server ทำงานถูกต้อง
- ส่วนประกอบหลักของ XAMPP:
- WAMP (Windows, Apache, MySQL, PHP): สำหรับผู้ใช้ระบบปฏิบัติการ Windows โดยเฉพาะ
- MAMP (Mac, Apache, MySQL, PHP): สำหรับผู้ใช้ระบบปฏิบัติการ macOS
หลังจากติดตั้ง XAMPP และ Start Apache แล้ว ให้สร้างไฟล์ชื่อ hello.php
ในโฟลเดอร์ htdocs
(ซึ่งมักจะอยู่ที่ C:\xampp\htdocs
บน Windows) โดยมีเนื้อหาดังนี้:
<?php echo "สวัสดี, โลก PHP จาก XAMPP!"; ?>
คำอธิบายตัวอย่าง: เมื่อคุณเปิดเบราว์เซอร์แล้วไปที่ http://localhost/hello.php
, Apache Web Server จะรับรู้ว่าเป็นไฟล์ PHP และส่งไปให้ PHP Interpreter ประมวลผล คำสั่ง echo
จะแสดงผลข้อความออกมาทางเบราว์เซอร์
1.2 การใช้งาน PHP กับเว็บเซิร์ฟเวอร์
PHP เป็นภาษาที่ทำงานฝั่งเซิร์ฟเวอร์ (Server-Side) หมายความว่าโค้ด PHP จะถูกประมวลผลบนเครื่องเซิร์ฟเวอร์ก่อนที่จะส่งผลลัพธ์ (ส่วนใหญ่เป็น HTML) กลับไปยังเบราว์เซอร์ของผู้ใช้
1.3 โครงสร้างไฟล์ PHP
ไฟล์ PHP จะต้องมีนามสกุลเป็น .php
และโค้ด PHP จะถูกเขียนอยู่ภายในแท็ก <?php ... ?>
1.4 การเขียน PHP ใน HTML
จุดเด่นสำคัญของ PHP คือความสามารถในการฝังโค้ด PHP เข้าไปในเอกสาร HTML ได้โดยตรง เพื่อสร้างเนื้อหาแบบไดนามิก
ตัวอย่าง: การแสดงวันที่ปัจจุบัน<p>ขณะนี้เวลา: <?php echo date('d F Y H:i:s'); ?></p>
คำอธิบายตัวอย่าง: คำสั่ง date()
เป็นฟังก์ชันของ PHP ที่ใช้สำหรับจัดรูปแบบวันที่และเวลา คำสั่ง echo
จะแสดงผลวันที่และเวลาที่จัดรูปแบบแล้วออกมา ณ ตำแหน่งนั้นใน HTML
หน่วยที่ 2: ไวยากรณ์ (Syntax) และตัวแปร (Variables)
หน่วยนี้จะอธิบายไวยากรณ์พื้นฐานของ PHP รวมถึงวิธีการประกาศและใช้งานตัวแปร ซึ่งเป็นองค์ประกอบสำคัญในการเขียนโปรแกรมทุกภาษา
2.1 การเขียนโค้ด PHP เบื้องต้น
โค้ด PHP ประกอบด้วยชุดคำสั่ง (statements) ซึ่งแต่ละคำสั่งจะจบด้วยเครื่องหมายอัฒภาค (semicolon ;
)
การแสดงความคิดเห็น (Comments)
Comments คือส่วนของโค้ดที่ PHP Interpreter จะไม่นำไปประมวลผล ใช้สำหรับอธิบายโค้ด
// นี่คือ comment แบบบรรทัดเดียว
# นี่ก็เป็น comment แบบบรรทัดเดียว
/*
นี่คือ comment
แบบหลายบรรทัด
*/
2.5 การประกาศตัวแปร
ตัวแปรใน PHP เริ่มต้นด้วยเครื่องหมายดอลลาร์ ($
) ตามด้วยชื่อตัวแปร PHP เป็นภาษา Dynamically Typed หมายความว่าคุณไม่จำเป็นต้องประกาศชนิดข้อมูลของตัวแปรก่อนใช้งาน
$message = "นี่คือข้อความ"; // ชนิด string
$count = 100; // ชนิด integer
$price = 19.99; // ชนิด float
2.6 กฎการตั้งชื่อตัวแปร
- ต้องขึ้นต้นด้วย
$
ตามด้วยตัวอักษรหรือ underscore (_
) - ห้ามขึ้นต้นด้วยตัวเลข
- ประกอบด้วยตัวอักษร (a-z, A-Z), ตัวเลข (0-9), และ underscore เท่านั้น
- เป็น Case-Sensitive (
$name
กับ$Name
คือคนละตัว)
2.8 ตัวแปรประเภทต่าง ๆ (ขอบเขตของตัวแปร - Variable Scopes)
PHP มีขอบเขตของตัวแปร 3 แบบหลัก:
- Local: ประกาศและใช้งานได้เฉพาะภายในฟังก์ชัน
- Global: ประกาศภายนอกฟังก์ชัน และต้องใช้คีย์เวิร์ด
global
หรือ$GLOBALS
เพื่อเข้าถึงภายในฟังก์ชัน - Static: เป็นตัวแปร local ที่คงค่าเดิมไว้แม้ฟังก์ชันจะทำงานจบไปแล้ว
function staticCounter() {
static $count = 0; // ประกาศและกำหนดค่าเริ่มต้นครั้งเดียว
$count++;
echo $count . " ";
}
staticCounter(); // 1
staticCounter(); // 2
staticCounter(); // 3
หน่วยที่ 3: คำสั่ง Echo และคำสั่ง Print
echo
และ print
เป็น construct ของภาษาที่ใช้ในการแสดงผลข้อมูลออกทางหน้าเว็บ ทั้งสองคำสั่งมีความคล้ายคลึงกันมาก แต่ก็มีความแตกต่างเล็กน้อยที่ควรทราบ
3.1 ความแตกต่างระหว่าง Echo และ Print
คุณสมบัติ | echo |
print |
---|---|---|
การคืนค่า | ไม่มี | คืนค่า 1 เสมอ |
พารามิเตอร์ | รับได้หลายตัว (คั่นด้วย , ) | รับได้เพียงตัวเดียว |
ความเร็ว | เร็วกว่าเล็กน้อย | ช้ากว่าเล็กน้อย |
3.2 การใช้งาน Echo
นิยมใช้มากกว่าเพราะเร็วกว่าและยืดหยุ่นกว่า
$name = "สมชาย";
echo "สวัสดี, ", $name, " ยินดีต้อนรับ!"; // ใช้หลายพารามิเตอร์
3.3 การใช้งาน Print
เนื่องจากมีการคืนค่า จึงสามารถใช้ใน expression ได้ (แต่ไม่ค่อยนิยม)
if (print "ตรวจสอบ...") {
echo " ทำงานสำเร็จ";
}
หน่วยที่ 4: ประเภทข้อมูล (Data Types)
PHP รองรับประเภทข้อมูลหลายชนิด ซึ่งสามารถแบ่งออกเป็นกลุ่มหลักๆ ได้ดังนี้: Scalar Types, Compound Types, และ Special Types.
4.1 ชนิดข้อมูลเบื้องต้น (Scalar Types)
Scalar types เป็นชนิดข้อมูลที่เก็บค่าเดี่ยวๆ ได้แก่:
- Integer: ตัวเลขจำนวนเต็ม เช่น
123
,-456
- Float (Double): ตัวเลขทศนิยม เช่น
3.14
,-0.01
- String: ข้อความ เช่น
'สวัสดี'
,"PHP"
- Boolean: ค่าความจริง คือ
true
หรือfalse
$age = 25; // Integer
$price = 499.99; // Float
$name = "มานี"; // String
$isReady = true; // Boolean
var_dump($age, $price, $name, $isReady);
4.2 ชนิดข้อมูลเชิงโครงสร้าง (Compound Types)
- Array: กลุ่มของข้อมูลที่จัดเก็บภายใต้ชื่อเดียว (จะเรียนในหน่วยที่ 9)
- Object: อินสแตนซ์ของคลาส (สำหรับ OOP)
4.3 ชนิดข้อมูลพิเศษ (Special Types)
- NULL: ตัวแปรที่ไม่มีค่า
- Resource: ตัวแปรพิเศษที่อ้างอิงถึงทรัพยากรภายนอก เช่น การเชื่อมต่อฐานข้อมูล
4.4 การตรวจสอบประเภทข้อมูล
ใช้ฟังก์ชัน is_...()
เช่น is_int()
, is_string()
หรือใช้ gettype()
เพื่อดูชื่อชนิดข้อมูล
$data = 123;
if (is_int($data)) {
echo "ข้อมูลเป็น Integer";
}
echo "<br>ชนิดของข้อมูลคือ: " . gettype($data);
หน่วยที่ 5: สตริง (Strings) และค่าคงที่ (Constants)
สตริง (String) คือชุดของอักขระที่ใช้สำหรับเก็บและจัดการข้อความ ส่วนค่าคงที่ (Constant) คือตัวระบุสำหรับค่าที่ไม่สามารถเปลี่ยนแปลงได้ตลอดการทำงานของสคริปต์
5.2 การใช้เครื่องหมายคำพูดเดี่ยวและคู่
- Single Quotes (' '): ประมวลผลสตริงตามตัวอักษร (literal) จะไม่ทำการแทนที่ค่าตัวแปร (interpolation) และ escape characters ส่วนใหญ่ไม่ทำงาน (ยกเว้น
\'
และ\\
) - Double Quotes (" "): ประมวลผลสตริงและแทนที่ตัวแปรด้วยค่าของมัน และรองรับ escape characters (เช่น
\n
,\t
,\$
)
$name = 'สมศรี';
echo 'สวัสดี, $name'; // ผลลัพธ์: สวัสดี, $name
echo "<br>";
echo "สวัสดี, $name"; // ผลลัพธ์: สวัสดี, สมศรี
5.3 ฟังก์ชั่นการจัดการสตริง
PHP มีฟังก์ชันมากมายสำหรับจัดการสตริง เช่น:
strlen($string)
: คืนค่าความยาวของสตริงstr_replace($search, $replace, $subject)
: แทนที่ข้อความsubstr($string, $start, $length)
: ตัดสตริงย่อยexplode($delimiter, $string)
: แบ่งสตริงเป็น arrayimplode($glue, $array)
: รวม array เป็นสตริง
$sentence = "PHP is a popular scripting language.";
$newSentence = str_replace("popular", "powerful", $sentence);
echo $newSentence; // PHP is a powerful scripting language.
$csv = "apple,banana,cherry";
$fruitsArray = explode(",", $csv);
print_r($fruitsArray); // Array ( [0] => apple [1] => banana [2] => cherry )
5.5 การประกาศค่าคงที่
ค่าคงที่เมื่อกำหนดแล้วจะไม่สามารถเปลี่ยนแปลงได้ มี scope เป็น global โดยอัตโนมัติ
- define(): ฟังก์ชันดั้งเดิม สามารถใช้ได้ทุกที่
define("SITE_NAME", "เว็บเรียน PHP"); echo SITE_NAME;
- const: คีย์เวิร์ดที่ใหม่กว่า ใช้ประกาศนอกคลาส (global) หรือในคลาสก็ได้
const APP_VERSION = "2.0"; echo APP_VERSION;
5.7 ค่าคงที่แบบ Magic Constants
ค่าคงที่พิเศษที่ PHP กำหนดไว้ให้ ซึ่งค่าจะเปลี่ยนไปตามบริบทที่ใช้งาน เช่น:
__LINE__
: หมายเลขบรรทัดปัจจุบัน__FILE__
: พาธเต็มและชื่อไฟล์ปัจจุบัน__DIR__
: ไดเรกทอรีของไฟล์ปัจจุบัน__FUNCTION__
: ชื่อฟังก์ชันปัจจุบัน__CLASS__
,__METHOD__
: ชื่อคลาสและเมธอดปัจจุบัน
echo "This is line " . __LINE__ . " in file " . __FILE__;
หน่วยที่ 6: โอเพอเรเตอร์ (Operators)
โอเพอเรเตอร์ใช้ในการดำเนินการกับตัวแปรและค่าต่างๆ เช่น การคำนวณทางคณิตศาสตร์, การเปรียบเทียบ, และการดำเนินการทางตรรกะ
6.1 โอเปอเรเตอร์ทางคณิตศาสตร์
ใช้สำหรับการคำนวณ: +
(บวก), -
(ลบ), *
(คูณ), /
(หาร), %
(หารเอาเศษ), **
(ยกกำลัง)
$x = 10;
$y = 3;
echo 10 % 3; // ผลลัพธ์คือ 1
echo 2 ** 3; // ผลลัพธ์คือ 8 (2*2*2)
6.2 โอเปอเรเตอร์การเปรียบเทียบ
ใช้เปรียบเทียบค่าสองค่า ผลลัพธ์เป็น boolean
==
(เท่ากับ): ตรวจสอบค่าเท่านั้น===
(เหมือนกัน): ตรวจสอบทั้งค่าและชนิดข้อมูล (แนะนำให้ใช้บ่อยกว่าเพื่อความแม่นยำ)!=
หรือ<>
(ไม่เท่ากับ)!==
(ไม่เหมือนกัน)<
,>
,<=
,>=
<=>
(Spaceship): คืนค่า -1, 0, หรือ 1
$a = 5;
$b = "5";
var_dump($a == $b); // bool(true)
var_dump($a === $b); // bool(false)
6.4 โอเปอเรเตอร์ตรรกะ
ใช้รวมเงื่อนไข: &&
(และ), ||
(หรือ), !
(ไม่)
$age = 25;
$isCitizen = true;
if ($age >= 18 && $isCitizen) {
echo "คุณมีสิทธิ์เลือกตั้ง";
}
Null Coalescing Operator (??)
เป็นทางลัดสำหรับตรวจสอบว่าตัวแปรมีค่า (ไม่ใช่ null) หรือไม่ ถ้ามีให้ใช้ค่านั้น ถ้าไม่มี (เป็น null) ให้ใช้ค่าสำรองที่กำหนด
// แบบเก่า
$name = isset($_GET['user']) ? $_GET['user'] : 'Guest';
// แบบใหม่ด้วย ??
$name = $_GET['user'] ?? 'Guest';
echo $name;
คำอธิบาย: บรรทัดที่สองจะตรวจสอบว่า $_GET['user']
มีอยู่และไม่ใช่ null
หรือไม่ ถ้าใช่ $name
จะได้รับค่านั้น ถ้าไม่ใช่ $name
จะได้รับค่า 'Guest' แทน ซึ่งสั้นและอ่านง่ายกว่ามาก
หน่วยที่ 7: คำสั่งเงื่อนไข (Conditionals) และคำสั่งวนรอบ (Looping)
คำสั่งเงื่อนไขใช้ควบคุมการทำงานของโปรแกรมตามเงื่อนไข ส่วนคำสั่งวนรอบใช้ทำซ้ำชุดคำสั่ง
7.1 คำสั่งตรวจสอบเงื่อนไข If...Else...Elseif
ใช้ในการทำงานตามเงื่อนไขที่กำหนด
$score = 75;
if ($score >= 80) {
echo "เกรด A";
} elseif ($score >= 70) {
echo "เกรด B";
} else {
echo "เกรด C หรือต่ำกว่า";
}
7.2 คำสั่งตรวจสอบเงื่อนไข Switch
ใช้เมื่อต้องการเปรียบเทียบตัวแปรหนึ่งกับหลายๆ ค่าที่เป็นไปได้
$day = "Sunday";
switch ($day) {
case "Saturday":
case "Sunday":
echo "วันหยุดสุดสัปดาห์!";
break;
default:
echo "วันทำงาน";
}
คำสั่งวนรอบ (Loops)
- while: ทำงานซ้ำตราบใดที่เงื่อนไขเป็นจริง
- do...while: ทำงานก่อน 1 ครั้ง แล้วจึงตรวจสอบเงื่อนไข
- for: ใช้เมื่อทราบจำนวนรอบที่แน่นอน
- foreach: ใช้สำหรับวนลูปผ่านสมาชิกทุกตัวในอาเรย์ (นิยมใช้ที่สุดสำหรับอาเรย์)
$fruits = ["Apple", "Banana", "Cherry"];
foreach ($fruits as $fruit) {
echo $fruit . "<br>";
}
หน่วยที่ 8: คำสั่งฟังก์ชัน (Functions)
ฟังก์ชันคือกลุ่มของคำสั่งที่ทำงานร่วมกันเพื่อทำงานเฉพาะอย่าง สามารถเรียกใช้ซ้ำได้ ช่วยให้โค้ดเป็นระเบียบ, จัดการง่าย, และลดความซ้ำซ้อน
8.1 การประกาศและเรียกใช้ฟังก์ชัน
// การประกาศฟังก์ชัน
function calculateArea($width, $height) {
$area = $width * $height;
return $area; // คืนค่าผลลัพธ์
}
// การเรียกใช้ฟังก์ชันและเก็บผลลัพธ์ในตัวแปร
$roomArea = calculateArea(5, 10); // 5 และ 10 คือ arguments
echo "พื้นที่ห้องคือ: " . $roomArea . " ตารางเมตร";
Type Declarations (Type Hinting) & Return Types
ตั้งแต่ PHP 7 เป็นต้นมา เราสามารถระบุชนิดข้อมูลของพารามิเตอร์และค่าที่ฟังก์ชันจะคืนกลับได้ เพื่อเพิ่มความแม่นยำและช่วยให้หาข้อผิดพลาดได้ง่ายขึ้น
// declare(strict_types=1); // หากเปิดใช้งาน PHP จะเข้มงวดกับชนิดข้อมูลมากขึ้น
function add(int $a, int $b): int {
return $a + $b;
}
echo add(5, 10); // 15
// echo add("5", "10"); // หาก strict_types=1 จะเกิด TypeError, ถ้าไม่เปิดจะพยายามแปลงค่าให้
คำอธิบาย: int $a, int $b
บอกว่าพารามิเตอร์ $a
และ $b
ต้องเป็นชนิด Integer ส่วน : int
บอกว่าฟังก์ชันนี้ต้องคืนค่าเป็น Integer เท่านั้น
Anonymous Functions (Closures)
คือฟังก์ชันที่ไม่ต้องมีชื่อ สามารถกำหนดค่าให้กับตัวแปรและส่งไปเป็นพารามิเตอร์ของฟังก์ชันอื่นได้
$sayHello = function($name) {
echo "Hello, " . $name;
}; // อย่าลืม ; หลังการกำหนดค่า
$sayHello("World"); // เรียกใช้งานผ่านตัวแปร
Arrow Functions (PHP 7.4+)
เป็นทางลัดสำหรับการเขียน Anonymous function แบบง่ายๆ ที่มีเพียง expression เดียว
$numbers = [1, 2, 3, 4];
$squaredNumbers = array_map(fn($number) => $number ** 2, $numbers);
// array_map จะนำฟังก์ชันไปใช้กับทุกสมาชิกในอาเรย์
print_r($squaredNumbers); // Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 )
หน่วยที่ 9: อาเรย์ (Arrays)
อาเรย์ใน PHP เป็นตัวแปรชนิดพิเศษที่สามารถเก็บข้อมูลได้หลายค่าในตัวแปรเดียว มีความยืดหยุ่นสูงและเป็นหัวใจสำคัญของการเขียนโปรแกรม PHP
9.2 ประเภทของอาเรย์
- Indexed Array: มี index เป็นตัวเลข เริ่มจาก 0 โดยอัตโนมัติ
$cars = ["Toyota", "Honda", "Mazda"]; echo $cars[1]; // Honda
- Associative Array: มี key เป็นสตริงที่ผู้ใช้กำหนดเอง
$student = ["name" => "สมศรี", "age" => 22, "major" => "IT"]; echo $student["name"]; // สมศรี
- Multidimensional Array: อาเรย์ที่เก็บอาเรย์อื่นๆ เป็นสมาชิก
$students = [ ["name" => "Alice", "score" => 90], ["name" => "Bob", "score" => 82] ]; echo $students[0]["name"]; // Alice
9.4 ฟังก์ชันการจัดการอาเรย์
PHP มีฟังก์ชันสำหรับอาเรย์มากมาย นี่คือตัวอย่างที่ใช้บ่อย:
count($array)
: นับจำนวนสมาชิกarray_push(&$array, $value)
: เพิ่มสมาชิกต่อท้ายarray_pop(&$array)
: ดึงสมาชิกตัวท้ายออกin_array($needle, $haystack)
: ตรวจสอบว่ามีค่าที่ต้องการในอาเรย์หรือไม่array_keys($array)
: ดึง key ทั้งหมดออกมาเป็นอาเรย์ใหม่array_values($array)
: ดึง value ทั้งหมดออกมาเป็นอาเรย์ใหม่sort(&$array)
,rsort()
: จัดเรียง indexed arrayasort(&$array)
,ksort(&$array)
: จัดเรียง associative array
ฟังก์ชัน Array ขั้นสูง (ตัวอย่าง)
array_map($callback, $array)
: นำฟังก์ชัน callback ไปใช้กับทุกสมาชิกของอาเรย์และคืนค่าเป็นอาเรย์ใหม่array_filter($array, $callback)
: กรองสมาชิกในอาเรย์ตามเงื่อนไขในฟังก์ชัน callback
// array_map
$numbers = [1, 2, 3, 4];
$doubled = array_map(fn($n) => $n * 2, $numbers);
print_r($doubled); // Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )
// array_filter
$scores = [80, 45, 92, 67, 34];
$passingScores = array_filter($scores, fn($score) => $score >= 50);
print_r($passingScores); // Array ( [0] => 80 [2] => 92 [3] => 67 )
หน่วยที่ 10: การเขียนเว็บขนาดเล็ก ด้วยพีเอชพี
ในหน่วยนี้ เราจะนำความรู้ที่ได้เรียนมาประยุกต์ใช้ในการสร้างเว็บแอปพลิเคชันขนาดเล็ก เช่น การจัดการฟอร์ม และการแสดงผลข้อมูล
การจัดการฟอร์ม (Form Handling)
หัวใจสำคัญของการทำเว็บแบบโต้ตอบได้คือการรับข้อมูลจากผู้ใช้ผ่านฟอร์ม PHP มี Superglobal arrays คือ $_GET
และ $_POST
สำหรับรับข้อมูลนี้
$_GET
: รับข้อมูลที่ส่งมาทาง URL (query string) เหมาะสำหรับข้อมูลที่ไม่สำคัญมาก เช่น ID ของหน้า, คำค้นหา$_POST
: รับข้อมูลที่ส่งมาใน HTTP request body เหมาะสำหรับข้อมูลที่สำคัญ เช่น รหัสผ่าน, ข้อมูลส่วนตัว หรือข้อมูลจำนวนมาก
หลักการสำคัญในการจัดการฟอร์ม
- แสดงฟอร์ม (HTML): สร้างฟอร์มด้วยแท็ก
<form>
ระบุmethod
(GET/POST) และaction
(ไฟล์ที่จะประมวลผล) - รับข้อมูล (PHP): ใช้
$_POST
หรือ$_GET
เพื่อเข้าถึงข้อมูลที่ผู้ใช้กรอก - ทำความสะอาดและตรวจสอบข้อมูล (Sanitize & Validate):
- Sanitize: ทำความสะอาดข้อมูลเพื่อป้องกันอันตราย เช่น ใช้
htmlspecialchars()
เพื่อป้องกัน XSS - Validate: ตรวจสอบว่าข้อมูลที่ได้รับถูกต้องตามรูปแบบที่ต้องการหรือไม่ เช่น อีเมลถูกต้อง, รหัสผ่านมีความยาวพอดี
- Sanitize: ทำความสะอาดข้อมูลเพื่อป้องกันอันตราย เช่น ใช้
- ประมวลผลข้อมูล: นำข้อมูลไปใช้งาน เช่น บันทึกลงฐานข้อมูล, ส่งอีเมล, แสดงผล
- ให้ Feedback กับผู้ใช้: แจ้งให้ผู้ใช้ทราบว่าการส่งข้อมูลสำเร็จหรือมีข้อผิดพลาด
contact_page_improved.php
(จากตัวอย่างก่อนหน้า) เป็นตัวอย่างที่ดีของการจัดการฟอร์มที่ครอบคลุมหลักการเหล่านี้