Podrobnosti uporabe potrditvenih polj v PHP
Recimo, da je v našem obrazcu le potrditveno polje:
<form action="" method="GET">
<input type="checkbox" name="flag">
<input type="submit">
</form>
Naj koda za obdelavo našega obrazca izgleda takole:
<?php
if (!empty($_GET)) { // če je bil obrazec poslan
if (isset($_GET['flag'])) { // če je potrditveno polje označeno
echo 'označeno';
} else {
echo 'ni označeno';
}
}
?>
Pričakuje nas težava - če potrditveno polje ni označeno,
potem, ker v obrazcu poleg potrditvenega polja ni drugih
elementov, bo v $_GET prazen
seznam. To pomeni, da v kodi za obdelavo
obrazca ne bomo prišli v prvi if, ki preverja
pošiljanje obrazca.
Za rešitev težave uporabijo poseben postopek: ustvarijo skriti vnos z enakim imenom, kot je naše potrditveno polje. Pri tem vrednost skritega vnosa nastavijo na nič, potrditvenega polja pa na ena:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input type="checkbox" name="flag" value="1">
<input type="submit">
</form>
V tem primeru se bo zgodilo naslednje. Če potrditveno polje ni označeno, bo na strežnik poslan le vrednost skritega vnosa. Če pa je potrditveno polje označeno, pa bosta na strežnik poslani obe vrednosti z enim imenom. Toda, ker bo vrednost potrditvenega polja druga, bo preprosto povošila prvo.
Torej, zdaj bo naše potrditveno polje pošiljalo na strežnik bodisi nič, bodisi ena:
<?php
var_dump($_GET['flag']); // '0' ali '1'
?>
Uporabimo to v našem preverjanju:
<?php
if (!empty($_GET)) {
if ($_GET['flag'] === '1') {
echo 'označeno';
} else {
echo 'ni označeno';
}
}
?>
S potrditvenim poljem vprašajte uporabnika,
ali je star 18 let ali ne. Če
je, mu dovolite dostop do spletnega mesta, če pa
ni - mu ga ne dovolite.