PHP-тағы чекбокстарды қолдану ерекшеліктері
Біздің формада тек чекбокс болсын:
<form action="" method="GET">
<input type="checkbox" name="flag">
<input type="submit">
</form>
Біздің форманы өңдеу коды былай көрінейін:
<?php
if (!empty($_GET)) { // егер форма жіберілген болса
if (isset($_GET['flag'])) { // егер флажок белгіленген болса
echo 'белгіленген';
} else {
echo 'белгіленбеген';
}
}
?>
Бізді мәселе күтіп тұр - егер флажок белгіленбеген болса,
онда формада чекбокстан басқа басқа элементтер болмағандықтан,
$_GET-та бос массив болады. Бұл форманы өңдеу кодында
біз бірінші if-ке, форманың жіберілгенін тексеріп, түспейміз.
Мәселені шешу үшін арнайы әдіс қолданылады: чекбоксімізбен бірдей атауы бар жасырын инпут жасалады. Бұл ретте жасырын инпуттың мәнін нөлге, ал чекбокстың мәнін бірге қояды:
<form action="" method="GET">
<input type="hidden" name="flag" value="0">
<input type="checkbox" name="flag" value="1">
<input type="submit">
</form>
Бұл жағдайда мынадай нәтиже шығады. Егер чекбокс белгіленбеген болса, серверге тек жасырын инпуттың мәні жіберіледі. Егер чекбокс белгіленген болса, серверге бір атауы бар екі мән жіберіледі. Бірақ, чекбокстың мәні екінші болатындықтан, ол біріншінің орнын басады.
Сонымен, енді біздің чекбокс серверге не нөлді, не бірді жібереді:
<?php
var_dump($_GET['flag']); // '0' немесе '1'
?>
Мұны біздің тексеруде қолданайық:
<?php
if (!empty($_GET)) {
if ($_GET['flag'] === '1') {
echo 'белгіленген';
} else {
echo 'белгіленбеген';
}
}
?>
Флажок көмегімен пайдаланушыдан сұраңыз,
оларға 18 жасы бар ма жоқ па екенін.
Егер бар болса, оларға сайтқа кіруге рұқсат етіңіз, ал егер жоқ болса - рұқсат етпеңіз.