PHP iseümbersuunamine parameetrite lisamisega

Oletame, et lehel index.php edastatakse GET parameeter nimega arg. Kuvame selle sisu ekraanil:

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

Oletame, et meie leht ilma GET parameetrita ei saa korrektselt töötada. Meie juhul see kehtib tõesti, sest kui parameeter ei ole edastatud, siis juurdepääs $_GET['arg'] põhjustab vea.

Võib tekkida küsimus, miks üldse inimene jõuab meie lehele ilma parameetrita? Lõppude lõpuks võime me kõikjal oma saidil panna lingid selle parameetriga. Siiski, see ei ole garantii: meie saidi kasutaja võib näiteks kuskilt linki kopeerida ja kaotada selle käigus parameetri. Või lihtsalt kogemata selle kustutada, aadressiriba muutes.

Üldjuhul peaks meie kood igal juhul eeldama sellist olukorda ja midagi sellega ette võtma. Mida siis teha saab?

Saame kontrollida meie GET parameetri olemasolu ja kuvada seda ainult siis, kui see on olemas:

index.php<?php
  if (isset($_GET['arg'])) {
    echo $_GET['arg'];
  } else {
    // reageerime kuidagi, näiteks teatega
  }
?>

Võib läheneda saledamalt:

index.php<?php
  if (!isset($_GET['arg'])) {
    $_GET['arg'] = 'default'; // vaikeväärtus
  }
  
  echo $_GET['arg']; // garanteeritult midagi väljastab veata
?>

Või saab teha nii, et lehele ilma parameetrita sisenedes toimub ümbersuunamine samale lehele parameetriga:

index.php<?php
  if (!isset($_GET['arg'])) {
    header('Location: ?arg=default');
  }
  
  echo $_GET['arg']; // parameeter on garanteeritult olemas
?>
Задание 1

Kirjelda, milles erineb teine variant kolmandast.

Задание 2

Oletame, et lehel page.php saab edastada numbri kasutades GET parameetrit nimega num. Tehke nii, et sisenemisel ilma antud parameetrita, teostatakse automaatselt ümbersuunamine samale lehele, kuid parameetriga num väärtusega 1.