თვითრედირექტი პარამეტრების დამატებით 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.