การเปลี่ยนเส้นทางด้วยตัวเองพร้อมเพิ่มพารามิเตอร์ใน PHP

สมมติว่าบนหน้า index.php มีการส่ง พารามิเตอร์ GET มาชื่อ arg มาแสดงผลเนื้อหาของมันบนหน้าจอ:

index.php<?php
  echo $_GET['arg'];
?>

สมมติว่าหน้าของเราไม่สามารถทำงานได้อย่างถูกต้องโดยไม่มีพารามิเตอร์ GET ในกรณีของเรา เป็นเช่นนั้นจริงๆ เพราะถ้าไม่ได้ส่งพารามิเตอร์มา การเข้าถึง $_GET['arg'] จะทำให้เกิดข้อผิดพลาด

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

โดยรวมแล้ว ไม่ว่ากรณีใด ๆ รหัสของเราควรคาดการณ์ สถานการณ์ดังกล่าวและดำเนินการบางอย่างกับมัน แล้ว เราสามารถทำอะไรได้บ้าง?

สามารถตรวจสอบพารามิเตอร์ GET ของเราได้ว่า มีอยู่หรือไม่ และแสดงผลก็ต่อเมื่อ มันมีอยู่:

index.php<?php
  if (isset($_GET['arg'])) {
    echo $_GET['arg'];
  } else {
    // ตอบสนองด้วยวิธีใดวิธีหนึ่ง เช่น ด้วยข้อความ
  }
?>

สามารถทำได้อย่างฉลาดกว่านี้:

index.php<?php
  if (!isset($_GET['arg'])) {
    $_GET['arg'] = 'default'; // ค่าเริ่มต้น
  }
  
  echo $_GET['arg']; // แน่ใจว่าจะแสดงผลบางอย่างออกมาโดยไม่มีข้อผิดพลาด
?>

หรือสามารถทำได้โดยให้เมื่อเข้ามาที่ หน้าโดยไม่มีพารามิเตอร์ ให้เกิดการเปลี่ยนเส้นทาง ไปยังหน้าเดิมพร้อมพารามิเตอร์:

index.php<?php
  if (!isset($_GET['arg'])) {
    header('Location: ?arg=default');
  }
  
  echo $_GET['arg']; // มีพารามิเตอร์แน่นอน
?>
Задание 1

อธิบายว่าวิธีที่สองแตกต่างจากวิธีที่สามอย่างไร

Задание 2

สมมติว่าบนหน้า page.php สามารถส่ง ตัวเลขได้โดยใช้พารามิเตอร์ GET ชื่อ num จงทำให้เมื่อเข้ามา โดยไม่มีพารามิเตอร์นี้ จะดำเนินการเปลี่ยนเส้นทาง โดยอัตโนมัติไปยังหน้าเดิม แต่มีพารามิเตอร์ num โดยมีค่าเป็น 1