PHP'de Checkbox Kullanımının Nüansları
Formumuzda sadece bir checkbox olduğunu varsayalım:
<form action="" method="GET">
<input type="checkbox" name="flag">
<input type="submit">
</form>
Form işleme kodumuzun şu şekilde olduğunu varsayalım:
<?php
if (!empty($_GET)) { // eğer form gönderildiyse
if (isset($_GET['flag'])) { // eğer checkbox işaretlendiyse
echo 'işaretlendi';
} else {
echo 'işaretlenmedi';
}
}
?>
Bir problemle karşılaşacağız - eğer checkbox işaretlenmezse,
formda checkbox dışında başka eleman olmadığı için,
$_GET içinde boş bir dizi olacak.
Bu, form işleme kodunda, formun gönderilip gönderilmediğini
kontrol eden ilk if bloğuna giremeyeceğimiz anlamına gelir.
Bu sorunu çözmek için özel bir yöntem kullanılır: checkbox'ımızla aynı isme sahip gizli bir input oluşturulur. Bu gizli input'un değeri 0, checkbox'ın değeri ise 1 olarak ayarlanır:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input type="checkbox" name="flag" value="1">
<input type="submit">
</form>
Bu durumda şu sonuç ortaya çıkar. Eğer checkbox işaretlenmezse, sunucuya sadece gizli input'un değeri gönderilir. Eğer checkbox işaretlenirse, sunucuya aynı isimle iki değer gönderilir. Ancak, checkbox'ın değeri ikinci sırada geleceği için, ilk değerin üzerine yazar.
Böylece, artık checkbox'ımız sunucuya ya 0 ya da 1 gönderecek:
<?php
var_dump($_GET['flag']); // '0' veya '1'
?>
Bunu kontrolümüzde kullanalım:
<?php
if (!empty($_GET)) {
if ($_GET['flag'] === '1') {
echo 'işaretlendi';
} else {
echo 'işaretlenmedi';
}
}
?>
Bir checkbox kullanarak kullanıcıya
18 yaşında olup olmadığını sorun.
Eğer yaşı tutuyorsa, siteye erişimine izin verin,
yaşı tutmuyorsa - izin vermeyin.