Nuansa Penggunaan Kotak Semak dalam PHP
Katakan dalam borang kami hanya terdapat satu kotak semak:
<form action="" method="GET">
<input type="checkbox" name="flag">
<input type="submit">
</form>
Katakan kod pemprosesan borang kami kelihatan seperti ini:
<?php
if (!empty($_GET)) { // jika borang telah dihantar
if (isset($_GET['flag'])) { // jika kotak semak ditanda
echo 'ditanda';
} else {
echo 'tidak ditanda';
}
}
?>
Kami akan menghadapi masalah - jika kotak semak tidak ditanda,
maka, oleh kerana dalam borang tiada elemen lain selain kotak semak,
dalam $_GET akan terdapat array kosong.
Ini bermakna, dalam kod pemprosesan
borang kami tidak akan memasuki if pertama, yang menyemak
penghantaran borang.
Untuk menyelesaikan masalah ini, teknik khas digunakan: buat input tersembunyi dengan nama yang sama, seperti kotak semak kami. Dalam kes ini, nilai input tersembunyi diletakkan sebagai sifar, dan kotak semak - satu:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input type="checkbox" name="flag" value="1">
<input type="submit">
</form>
Dalam kes ini, perkara berikut akan berlaku. Jika kotak semak tidak ditanda, maka hanya nilai input tersembunyi akan dihantar ke pelayan. Jika kotak semak ditanda, maka kedua-dua nilai dengan satu nama akan dihantar ke pelayan. Tetapi, oleh kerana nilai kotak semak akan menjadi yang kedua, maka ia hanya akan menindih nilai pertama.
Jadi, sekarang kotak semak kami akan menghantar ke pelayan sama ada sifar atau satu:
<?php
var_dump($_GET['flag']); // '0' atau '1'
?>
Gunakan ini dalam semakan kami:
<?php
if (!empty($_GET)) {
if ($_GET['flag'] === '1') {
echo 'ditanda';
} else {
echo 'tidak ditanda';
}
}
?>
Dengan menggunakan kotak semak, tanya pengguna
sama ada dia sudah berumur 18 tahun atau tidak. Jika
ya, benarkan dia akses ke laman web, dan jika
tidak - jangan benarkan.