Нијансе коришћења чекбокса у 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 проверу која
проверава да ли је форма послата.
За решавање проблема користе посебан трик: креира се скривено поље са истим именом, као што има наш чекбокс. При том вредност скривеног поља се поставља на нулу, а чекбокса - на јединицу:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input type="checkbox" name="flag" value="1">
<input type="submit">
</form>
У том случају ће се десити следеће. Ако чекбокс није означен, на сервер ће бити послата само вредност скривеног поља. Ако је чекбокс означен, на сервер ће бити послате обе вредности са једним именом. Али, пошто ће вредност чекбокса бити друга, она ће једноставно заменити прву.
Дакле, сада ће наш чекбокс слати на сервер или нулу, или јединицу:
<?php
var_dump($_GET['flag']); // '0' или '1'
?>
Искористимо то у нашој провери:
<?php
if (!empty($_GET)) {
if ($_GET['flag'] === '1') {
echo 'означен';
} else {
echo 'није означен';
}
}
?>
Помоћу чекбокса питајте корисника
да ли има 18 година или не. Ако
има, дозволите му приступ сајту, а ако
нема - не дозволите.