PHPде параметрлерди кошуу менен өз-өзүнө кайта багыттоо

index.php баракчасына arg деген аты менен GET параметри жөнөтүлсүн. Анын мазмунун экранга чыгаралы:

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 баракчасына num деген ат менен GET параметри аркылуу сан жөнөтсө болот деп коёлу. Бул параметрсиз киргенде, автоматтык түрдө ушул эле баракчага, бирок num параметринин мааниси 1 болгон абалда, кайта багыттоо болушун түзүңүз.