Nijanse korišćenja checkbox-ova u PHP-u
Recimo da u našoj formi postoji samo jedan checkbox:
<form action="" method="GET">
<input type="checkbox" name="flag">
<input type="submit">
</form>
Recimo da kod za obradu naše forme izgleda ovako:
<?php
if (!empty($_GET)) { // ako je forma poslata
if (isset($_GET['flag'])) { // ako je checkbox označen
echo 'označen';
} else {
echo 'nije označen';
}
}
?>
Suočićemo se sa problemom - ako checkbox nije označen,
tada, pošto u formi osim checkbox-a nema drugih
elemenata, u $_GET će biti prazan
niz. To znači da u kodu za obradu
forme nećemo ući u prvi if, koji proverava
da li je forma poslata.
Za rešavanje problema koristi se poseban trik: kreira se skriveni input sa istim imenom, kao i naš checkbox. Pritom se vrednost skrivenog input-a postavlja na nulu, a checkbox-a - na jedinicu:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input type="checkbox" name="flag" value="1">
<input type="submit">
</form>
U tom slučaju će se dogoditi sledeće. Ako checkbox nije označen, onda će se na server poslati samo vrednost skrivenog input-a. Ako je checkbox označen, onda će se na server poslati obe vrednosti sa jednim imenom. Ali, pošto će vrednost checkbox-a biti druga, ona će jednostavno pregaziti prvu.
Dakle, sada će naš checkbox slati na server ili nulu, ili jedinicu:
<?php
var_dump($_GET['flag']); // '0' ili '1'
?>
Iskoristimo ovo u našoj proveri:
<?php
if (!empty($_GET)) {
if ($_GET['flag'] === '1') {
echo 'označen';
} else {
echo 'nije označen';
}
}
?>
Pomoću checkbox-a pitajte korisnika
da li ima već 18 godina ili ne. Ako
ima, dozvolite mu pristup sajtu, a ako
nema - nemojte dozvoliti.