⊗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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне