Pašnovirzīšanās ar parametru pievienošanu PHP

Lai lapā index.php tiek nodots GET parametrs ar nosaukumu arg. Izvadīsim tā saturu uz ekrāna:

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

Pieņemsim, ka mūsu lapa bez GET parametra nevar darboties korekti. Mūsu gadījumā tā patiešām ir, jo, ja parametrs nav nodots, tad piekļuve $_GET['arg'] izraisīs kļūdu.

Var rasties jautājums, kāpēc vispār cilvēks var nokļūt mūsu lapā bez parametra? Galu galā mēs visur savā vietnē varam ievietot saites ar šo parametru. Tomēr tas nav garantija: mūsu vietnes lietotājs var, piemēram, kopēt saiti no kaut kurienes un zaudēt parametru. Vai arī vienkārši nejauši to izdzēst, rediģējot adreses joslu.

Kopumā, jebkurā gadījumā mūsu kodam jāparedz šāda situācija un kaut kas ar to jādara. Ko tad var izdarīt?

Var pārbaudīt mūsu GET parametra esamību un izvadīt to, tikai ja tāds pastāv:

index.php<?php
  if (isset($_GET['arg'])) {
    echo $_GET['arg'];
  } else {
    // kā reaģēt, piemēram, ar paziņojumu
  }
?>

Var rīkoties viltīgāk:

index.php<?php
  if (!isset($_GET['arg'])) {
    $_GET['arg'] = 'default'; // noklusējuma vērtība
  }
  
  echo $_GET['arg']; // garantēti kaut ko izvadīs bez kļūdas
?>

Var izdarīt tā, lai, ienākot lapā bez parametra, notiktu novirzīšana uz šo pašu lapu ar parametru:

index.php<?php
  if (!isset($_GET['arg'])) {
    header('Location: ?arg=default');
  }
  
  echo $_GET['arg']; // parametrs garantēti ir
?>
Задание 1

Pastāstiet, kāda atšķirība ir starp otro variantu un trešo.

Задание 2

Pieņemsim, ka lapā page.php var nodot skaitli, izmantojot GET parametru ar nosaukumu num. Izveidojiet tā, lai, ienākot bez šī parametra, automātiski tiktu veikta novirzīšana uz šo pašu lapu, bet ar parametru num ar vērtību 1.