Ինքնավերահղում GET պարամետրերի ավելացմամբ 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 արժեքով: