การเปลี่ยนเส้นทางด้วยตัวเองพร้อมเพิ่มพารามิเตอร์ใน PHP
สมมติว่าบนหน้า index.php มีการส่ง
พารามิเตอร์ GET มาชื่อ arg
มาแสดงผลเนื้อหาของมันบนหน้าจอ:
<?php
echo $_GET['arg'];
?>
สมมติว่าหน้าของเราไม่สามารถทำงานได้อย่างถูกต้องโดยไม่มีพารามิเตอร์ GET
ในกรณีของเรา
เป็นเช่นนั้นจริงๆ เพราะถ้าไม่ได้ส่งพารามิเตอร์มา
การเข้าถึง $_GET['arg']
จะทำให้เกิดข้อผิดพลาด
อาจมีคำถามว่าทำไมคนทั่วไป ถึงเข้ามายังหน้าของเราโดยไม่มีพารามิเตอร์? เพราะ เราสามารถใส่ลิงก์พร้อมพารามิเตอร์นี้ได้ทุกที่บนเว็บไซต์ของเรา อย่างไรก็ตาม นี่ไม่ใช่การรับประกัน: ผู้ใช้เว็บไซต์ของเราอาจจะ เช่น คัดลอก ลิงก์จากที่ไหนสักแห่งและสูญเสียพารามิเตอร์ไป หรืออาจลบมันโดยไม่ได้ตั้งใจ ขณะกำลังแก้ไขแถบที่อยู่
โดยรวมแล้ว ไม่ว่ากรณีใด ๆ รหัสของเราควรคาดการณ์ สถานการณ์ดังกล่าวและดำเนินการบางอย่างกับมัน แล้ว เราสามารถทำอะไรได้บ้าง?
สามารถตรวจสอบพารามิเตอร์ GET ของเราได้ว่า มีอยู่หรือไม่ และแสดงผลก็ต่อเมื่อ มันมีอยู่:
<?php
if (isset($_GET['arg'])) {
echo $_GET['arg'];
} else {
// ตอบสนองด้วยวิธีใดวิธีหนึ่ง เช่น ด้วยข้อความ
}
?>
สามารถทำได้อย่างฉลาดกว่านี้:
<?php
if (!isset($_GET['arg'])) {
$_GET['arg'] = 'default'; // ค่าเริ่มต้น
}
echo $_GET['arg']; // แน่ใจว่าจะแสดงผลบางอย่างออกมาโดยไม่มีข้อผิดพลาด
?>
หรือสามารถทำได้โดยให้เมื่อเข้ามาที่ หน้าโดยไม่มีพารามิเตอร์ ให้เกิดการเปลี่ยนเส้นทาง ไปยังหน้าเดิมพร้อมพารามิเตอร์:
<?php
if (!isset($_GET['arg'])) {
header('Location: ?arg=default');
}
echo $_GET['arg']; // มีพารามิเตอร์แน่นอน
?>
อธิบายว่าวิธีที่สองแตกต่างจากวิธีที่สามอย่างไร
สมมติว่าบนหน้า page.php สามารถส่ง
ตัวเลขได้โดยใช้พารามิเตอร์ GET ชื่อ
num จงทำให้เมื่อเข้ามา
โดยไม่มีพารามิเตอร์นี้ จะดำเนินการเปลี่ยนเส้นทาง
โดยอัตโนมัติไปยังหน้าเดิม แต่มีพารามิเตอร์
num โดยมีค่าเป็น 1