Nijanse korišćenja checkbox-ova u PHP-u

Recimo da u našoj formi postoji samo jedan checkbox:

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

Recimo da kod za obradu naše forme izgleda ovako:

html<?php
  if (!empty($_GET)) { // ako je forma poslata
    if (isset($_GET['flag'])) { // ako je checkbox označen
      echo 'označen';
    } else {
      echo 'nije označen';
    }
  }
?>

Suočićemo se sa problemom - ako checkbox nije označen, tada, pošto u formi osim checkbox-a nema drugih elemenata, u $_GET će biti prazan niz. To znači da u kodu za obradu forme nećemo ući u prvi if, koji proverava da li je forma poslata.

Za rešavanje problema koristi se poseban trik: kreira se skriveni input sa istim imenom, kao i naš checkbox. Pritom se vrednost skrivenog input-a postavlja na nulu, a checkbox-a - na jedinicu:

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

U tom slučaju će se dogoditi sledeće. Ako checkbox nije označen, onda će se na server poslati samo vrednost skrivenog input-a. Ako je checkbox označen, onda će se na server poslati obe vrednosti sa jednim imenom. Ali, pošto će vrednost checkbox-a biti druga, ona će jednostavno pregaziti prvu.

Dakle, sada će naš checkbox slati na server ili nulu, ili jedinicu:

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

Iskoristimo ovo u našoj proveri:

html<?php
  if (!empty($_GET)) {
    if ($_GET['flag'] === '1') {
      echo 'označen';
    } else {
      echo 'nije označen';
    }
  }
?>
Задание 1

Pomoću checkbox-a pitajte korisnika da li ima već 18 godina ili ne. Ako ima, dozvolite mu pristup sajtu, a ako nema - nemojte dozvoliti.