⊗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ščinaShqipSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Користимо колачиће за рад сајта, аналитику и персонализацију. Обрада података се врши у складу са Политиком приватности.
прихвати све подеси одбиј