Nuansa Penggunaan Kotak Semak dalam PHP

Katakan dalam borang kami hanya terdapat satu kotak semak:

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

Katakan kod pemprosesan borang kami kelihatan seperti ini:

html<?php
  if (!empty($_GET)) { // jika borang telah dihantar
    if (isset($_GET['flag'])) { // jika kotak semak ditanda
      echo 'ditanda';
    } else {
      echo 'tidak ditanda';
    }
  }
?>

Kami akan menghadapi masalah - jika kotak semak tidak ditanda, maka, oleh kerana dalam borang tiada elemen lain selain kotak semak, dalam $_GET akan terdapat array kosong. Ini bermakna, dalam kod pemprosesan borang kami tidak akan memasuki if pertama, yang menyemak penghantaran borang.

Untuk menyelesaikan masalah ini, teknik khas digunakan: buat input tersembunyi dengan nama yang sama, seperti kotak semak kami. Dalam kes ini, nilai input tersembunyi diletakkan sebagai sifar, dan kotak semak - satu:

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

Dalam kes ini, perkara berikut akan berlaku. Jika kotak semak tidak ditanda, maka hanya nilai input tersembunyi akan dihantar ke pelayan. Jika kotak semak ditanda, maka kedua-dua nilai dengan satu nama akan dihantar ke pelayan. Tetapi, oleh kerana nilai kotak semak akan menjadi yang kedua, maka ia hanya akan menindih nilai pertama.

Jadi, sekarang kotak semak kami akan menghantar ke pelayan sama ada sifar atau satu:

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

Gunakan ini dalam semakan kami:

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

Dengan menggunakan kotak semak, tanya pengguna sama ada dia sudah berumur 18 tahun atau tidak. Jika ya, benarkan dia akses ke laman web, dan jika tidak - jangan benarkan.