⊗ppPmFmChcN 307 of 447 menu

Нюансы выкарыстання чэкбоксаў у 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 гадоў ці не. Калі ёсць, дазвольце яму доступ на сайт, а калі няма - не дазваляйце.

Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць