Checkbox izmantošanas nianses PHP
Pieņemsim, ka mūsu formā ir tikai checkbox:
<form action="" method="GET">
<input type="checkbox" name="flag">
<input type="submit">
</form>
Pieņemsim, ka mūsu formas apstrādes kods izskatās šādi:
<?php
if (!empty($_GET)) { // ja forma tika nosūtīta
if (isset($_GET['flag'])) { // ja checkbox ir atzīmēts
echo 'atzīmēts';
} else {
echo 'neatzīmēts';
}
}
?>
Mūs sagaida problēma - ja checkbox nav atzīmēts,
tā kā formā bez checkbox nav citu elementu,
$_GET būs tukšs masīvs. Tas nozīmē, ka formas apstrādes
kodā mēs neiekļūsim pirmajā if, kas pārbauda
formas nosūtīšanu.
Lai atrisinātu šo problēmu, izmanto speciālu paņēmienu: izveido slēpto input ar tādu pašu nosaukumu kā mūsu checkbox. Šajā gadījumā slēptā input vērtību iestata uz nulli, bet checkbox - uz vienu:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input type="checkbox" name="flag" value="1">
<input type="submit">
</form>
Šajā gadījumā sanāks sekojošais. Ja checkbox nav atzīmēts, uz serveri tiks nosūtīta tikai slēptā input vērtība. Ja checkbox ir atzīmēts, uz serveri tiks nosūtītas abas vērtības ar vienu nosaukumu. Bet, tā kā checkbox vērtība būs otrā, tā vienkārši pārrakstīs pirmo.
Tātad, tagad mūsu checkbox nosūtīs uz serveri vai nu nulli, vai vienu:
<?php
var_dump($_GET['flag']); // '0' vai '1'
?>
Izmantosim to mūsu pārbaudē:
<?php
if (!empty($_GET)) {
if ($_GET['flag'] === '1') {
echo 'atzīmēts';
} else {
echo 'neatzīmēts';
}
}
?>
Izmantojot checkbox, jautājiet lietotājam,
vai viņam jau ir 18 gadi vai nav. Ja
ir, atļaujiet viņam piekļuvi vietnei, bet ja
nav - neatļaujiet.