Saviredirektavimas su parametrų pridėjimu PHP

Tegul puslapyje index.php perduodamas GET parametras su pavadinimu arg. Atvaizduokime jo turinį ekrane:

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

Tegul mūsų puslapis be GET parametro negali veikti korektiškai. Mūsų atveju tai iš tiesų taip, nes, jei parametras neperduotas, tai kreipimasis į $_GET['arg'] sukels klaidą.

Gali kilti klausimas, kodėl apskritai žmogus pateks į mūsų puslapį be parametro? Juk mes galime visur mūsų svetainėje dėti nuorodas su šiuo parametru. Tačiau, tai nėra garantija: mūsų svetainės naudotojas gali, pavyzdžiui, kopijuoti iš kažkur nuorodą ir prarasti tuo pačiu parametrą. Arba tiesiog atsitiktinai jį ištrinti, redaguodamas adreso eilutę.

Bet kuriuo atveju mūsų kodas turėtų numatyti tokią situaciją ir ką nors su ja daryti. Ką galima padaryti?

Galima patikrinti mūsų GET parametro egzistavimą ir jį atvaizduoti, tik jei jis egzistuoja:

index.php<?php
  if (isset($_GET['arg'])) {
    echo $_GET['arg'];
  } else {
    // kažkaip reaguojame, pavyzdžiui, pranešimu
  }
?>

Galima elgtis gudriau:

index.php<?php
  if (!isset($_GET['arg'])) {
    $_GET['arg'] = 'default'; // numatytoji reikšmė
  }
  
  echo $_GET['arg']; // garantuotai ką nors atvaizduos be klaidos
?>

O galima padaryti taip, kad patekus į puslapį be parametro, įvyktų redirektas į tą patį puslapį su parametru:

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

Paaiškinkite, kuo skiriasi antrasis variantas nuo trečiojo.

Задание 2

Tegul puslapyje page.php galima perduoti skaičių naudojant GET parametrą su pavadinimu num. Padarykite taip, kad patekus be šio parametro, automatiškai būtų atliktas redirektas į tą patį puslapį, bet su parametru num reikšmėje 1.