Sfumature dell'utilizzo delle checkbox in PHP
Supponiamo che nel nostro modulo ci sia solo una checkbox:
<form action="" method="GET">
<input type="checkbox" name="flag">
<input type="submit">
</form>
Supponiamo che il codice di elaborazione del nostro modulo sia così:
<?php
if (!empty($_GET)) { // se il modulo è stato inviato
if (isset($_GET['flag'])) { // se la checkbox è selezionata
echo 'selezionato';
} else {
echo 'non selezionato';
}
}
?>
Ci aspetta un problema - se la checkbox non è selezionata,
poiché nel modulo non ci sono altri elementi oltre alla checkbox,
in $_GET ci sarà un array vuoto.
Ciò significa che nel codice di elaborazione del modulo
non entreremo nel primo if, che verifica
l'invio del modulo.
Per risolvere il problema, viene utilizzata una tecnica speciale: creare un input nascosto con lo stesso nome della nostra checkbox. In questo caso, il valore dell'input nascosto è impostato a zero, e quello della checkbox a uno:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input type="checkbox" name="flag" value="1">
<input type="submit">
</form>
In questo caso, accadrà quanto segue. Se la checkbox non è selezionata, verrà inviato al server solo il valore dell'input nascosto. Se invece la checkbox è selezionata, verranno inviati al server entrambi i valori con lo stesso nome. Ma, poiché il valore della checkbox sarà il secondo, semplicemente sovrascriverà il primo.
Quindi, ora la nostra checkbox invierà al server zero o uno:
<?php
var_dump($_GET['flag']); // '0' o '1'
?>
Usiamolo nella nostra verifica:
<?php
if (!empty($_GET)) {
if ($_GET['flag'] === '1') {
echo 'selezionato';
} else {
echo 'non selezionato';
}
}
?>
Utilizzando una checkbox, chiedi all'utente
se ha già 18 anni o meno. Se
li ha, concedigli l'accesso al sito, altrimenti no.