PHPにおけるチェックボックス使用のニュアンス
フォームにチェックボックスしかないとしましょう:
<form action="" method="GET">
<input type="checkbox" name="flag">
<input type="submit">
</form>
フォーム処理コードが以下のようになっているとします:
<?php
if (!empty($_GET)) { // フォームが送信された場合
if (isset($_GET['flag'])) { // チェックボックスがオンになっている場合
echo 'オン';
} else {
echo 'オフ';
}
}
?>
問題が発生します - チェックボックスがオフの場合、
フォームに他の要素がないため、$_GETには空の配列が格納されます。
これは、フォーム処理コードの最初のif(フォーム送信を確認する部分)に入らないことを意味します。
この問題を解決するためには、特別な手法が使われます:チェックボックスと同じ名前の隠し入力フィールドを作成します。 隠し入力の値は0、チェックボックスの値は1に設定します:
<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を送信します:
<?php
var_dump($_GET['flag']); // '0' または '1'
?>
この結果をチェックに使用します:
<?php
if (!empty($_GET)) {
if ($_GET['flag'] === '1') {
echo 'オン';
} else {
echo 'オフ';
}
}
?>
チェックボックスを使用して、ユーザーが18歳以上かどうかを尋ねてください。
はいの場合、サイトへのアクセスを許可し、いいえの場合、許可しないでください。