PHPにおけるチェックボックス使用のニュアンス

フォームにチェックボックスしかないとしましょう:

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

フォーム処理コードが以下のようになっているとします:

html<?php
  if (!empty($_GET)) { // フォームが送信された場合
    if (isset($_GET['flag'])) { // チェックボックスがオンになっている場合
      echo 'オン';
    } else {
      echo 'オフ';
    }
  }
?>

問題が発生します - チェックボックスがオフの場合、 フォームに他の要素がないため、$_GETには空の配列が格納されます。 これは、フォーム処理コードの最初のif(フォーム送信を確認する部分)に入らないことを意味します。

この問題を解決するためには、特別な手法が使われます:チェックボックスと同じ名前の隠し入力フィールドを作成します。 隠し入力の値は0、チェックボックスの値は1に設定します:

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

この場合、以下のようになります。チェックボックスがオフの場合、 サーバーには隠し入力の値のみが送信されます。 チェックボックスがオンの場合、同じ名前の両方の値がサーバーに送信されます。 しかし、チェックボックスの値が2番目になるため、最初の値を上書きします。

これで、チェックボックスはサーバーに0または1を送信します:

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

この結果をチェックに使用します:

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

チェックボックスを使用して、ユーザーが18歳以上かどうかを尋ねてください。 はいの場合、サイトへのアクセスを許可し、いいえの場合、許可しないでください。