⊗ppPmFmChcN 307 of 447 menu

Niuanse wykorzystania checkboxów w PHP

Załóżmy, że w naszym formularzu znajduje się tylko checkbox:

<form action="" method="GET"> <input type="checkbox" name="flag"> <input type="submit"> </form>

Załóżmy, że kod przetwarzający nasz formularz wygląda tak:

<?php if (!empty($_GET)) { // jeśli formularz został wysłany if (isset($_GET['flag'])) { // jeśli checkbox jest zaznaczony echo 'zaznaczony'; } else { echo 'nie zaznaczony'; } } ?>

Czeka nas problem - jeśli checkbox nie jest zaznaczony, to, ponieważ w formularzu poza checkboxem nie ma innych elementów, w $_GET będzie znajdować się pusta tablica. Oznacza to, że w kodzie przetwarzającym formularz nie wejdziemy do pierwszego if, sprawdzającego wysłanie formularza.

Aby rozwiązać problem, stosuje się specjalną sztuczkę: tworzy się ukryty input z taką samą nazwą, jak naszego checkboxa. Jednocześnie wartością ukrytego inputa ustawia się zero, a checkboxa - jeden:

<form action="" method="GET"> <input type="hidden" name="flag" value="0"> <input type="checkbox" name="flag" value="1"> <input type="submit"> </form>

W takim przypadku otrzymamy następujący efekt. Jeśli checkbox nie jest zaznaczony, to na serwer zostanie wysłana tylko wartość ukrytego inputa. Jeśli zaś checkbox jest zaznaczony, to na serwer zostaną wysłane obie wartości z jedną nazwą. Ale, ponieważ wartość checkboxa będzie druga, to po prostu nadpisze ona pierwszą.

Podsumowując, teraz nasz checkbox będzie wysyłał na serwer albo zero, albo jeden:

<?php var_dump($_GET['flag']); // '0' lub '1' ?>

Wykorzystajmy to w naszym sprawdzeniu:

<?php if (!empty($_GET)) { if ($_GET['flag'] === '1') { echo 'zaznaczony'; } else { echo 'nie zaznaczony'; } } ?>

Za pomocą checkboxa zapytaj użytkownika, czy ma już 18 lat, czy nie. Jeśli tak, zezwól mu na dostęp do strony, a jeśli nie - nie zezwalaj.

Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć