Vetë-ridrejtimi me shtim të parametrave në PHP

Le të supozojmë se në faqen index.php transmetohet një parametër GET me emrin arg. Le të shfaqim përmbajtjen e tij në ekran:

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

Le të supozojmë se faqja jonë nuk mund të funksionojë si duhet pa parametrin GET. Në rastin tonë kjo është e vërtetë, sepse nëse parametri nuk transmetohet, atëherë aksesi në $_GET['arg'] do të shkaktojë një gabim.

Mund të lindë pyetja, pse në përgjithësi një person do të përfundojë në faqen tonë pa parametër? Në fund të fundit ne mund të vendosim lidhje kudo në faqen tonë me këtë parametër. Megjithatë, kjo nuk është garanci: përdoruesi i faqes sonë mund, për shembull, të kopjojë nga diku lidhjen dhe ta humbë parametrin. Ose thjesht ta fshijë rastësisht, duke edituar shiritin e adresave.

Në përgjithësi, në çdo rast kodi ynë duhet të parashikojë një situatë të tillë dhe të bëjë diçka me të. Çfarë mund të bëhet?

Mund të kontrollojmë nëse parametri ynë GET ekziston dhe ta shfaqim atë, vetëm nëse ekziston:

index.php<?php
  if (isset($_GET['arg'])) {
    echo $_GET['arg'];
  } else {
    // reagojmë në një farë mënyre, p.sh. me një mesazh
  }
?>

Mund të bëhet më dinak:

index.php<?php
  if (!isset($_GET['arg'])) {
    $_GET['arg'] = 'default'; // vlera e paracaktuar
  }
  
  echo $_GET['arg']; // garanton se do të shfaqë diçka pa gabim
?>

Ose mund të bëhet që kur hyni në faqe pa parametër të kryhet një ridrejtim në të njëjtën faqe me parametër:

index.php<?php
  if (!isset($_GET['arg'])) {
    header('Location: ?arg=default');
  }
  
  echo $_GET['arg']; // parametri është i garantuar të jetë i pranishëm
?>
Задание 1

Shpjegoni, cili është ndryshimi midis variantit të dytë dhe të tretë.

Задание 2

Le të supozojmë se në faqen page.php mund të transmetohet një numër me anë të parametrit GET me emrin num. Bëni që kur hyni pa këtë parametër, automatikisht të kryhet ridrejtimi në të njëjtën faqe, por me parametrin num me vlerën 1.