Nuansy použitia checkboxov v PHP

Nech v našom formulári je iba checkbox:

html<form action="" method="GET">
  <input type="checkbox" name="flag">
  <input type="submit">
</form>

Nech kód spracovania nášho formulára vyzerá takto:

html<?php
  if (!empty($_GET)) { // ak bol formulár odoslaný
    if (isset($_GET['flag'])) { // ak je checkbox zaškrtnutý
      echo 'zaškrtnutý';
    } else {
      echo 'nezaškrtnutý';
    }
  }
?>

Čaká nás problém - ak checkbox nie je zaškrtnutý, tak, keďže vo formulári okrem checkboxu nie sú žiadne ďalšie prvky, v $_GET bude prázdne pole. To znamená, že v kóde na spracovanie formulára sa nedostaneme do prvého if, ktorý kontroluje odoslanie formulára.

Na vyriešenie problému sa používa špeciálna pomôcka: vytvorí sa skrytý input s rovnakým menom, ako má náš checkbox. Pričom hodnotou skrytého inputu nastavia nulu a checkboxu - jednotku:

html<form action="" method="GET">
  <input type="hidden" name="flag" value="0">
  <input type="checkbox" name="flag" value="1">
  <input type="submit">
</form>

V takom prípade nastane nasledovné. Ak checkbox nie je zaškrtnutý, na server sa odošle iba hodnota skrytého inputu. Ak je checkbox zaškrtnutý, na server sa odošlú obe hodnoty s jedným menom. Ale, keďže hodnota checkboxu bude druhá, tak jednoducho prepíše prvú.

Takže, teraz náš checkbox bude odosielať na server buď nulu, alebo jednotku:

html<?php
  var_dump($_GET['flag']); // '0' alebo '1'
?>

Využime to v našej kontrole:

html<?php
  if (!empty($_GET)) {
    if ($_GET['flag'] === '1') {
      echo 'zaškrtnutý';
    } else {
      echo 'nezaškrtnutý';
    }
  }
?>
Задание 1

Pomocou checkboxu sa spýtajte používateľa, či má už 18 rokov alebo nie. Ak áno, umožnite mu prístup na stránku, a ak nie - neumožnite.