⊗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 'selected'; } else { echo 'not selected'; } } ?>

문제가 발생합니다. 체크박스가 선택되지 않으면, 체크박스 외에 다른 요소가 폼에 없기 때문에 $_GET에는 빈 배열이 들어갑니다. 이는 폼 처리 코드에서 폼 제출을 확인하는 첫 번째 if문에 진입하지 못한다는 의미입니다.

이 문제를 해결하기 위해 특별한 기법을 사용합니다: 체크박스와 동일한 이름을 가진 히든(hidden) 인풋을 생성하는 것입니다. 이때 히든 인풋의 값은 0, 체크박스의 값은 1로 설정합니다:

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

이 경우 다음과 같은 상황이 발생합니다. 체크박스가 선택되지 않으면, 히든 인풋의 값만 서버로 전송됩니다. 반면, 체크박스가 선택되면, 동일한 이름을 가진 두 값이 서버로 전송됩니다. 그러나 체크박스의 값이 두 번째이기 때문에 첫 번째 값을 덮어쓰게 됩니다.

따라서, 이제 우리의 체크박스는 서버로 0 또는 1을 전송하게 됩니다:

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

이를 우리의 조건문에서 활용해 봅시다:

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

체크박스를 사용하여 사용자에게 만 18세 이상인지 여부를 물어보세요. 만약 만 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
우리는 웹사이트 운영, 분석 및 개인화를 위해 쿠키를 사용합니다. 데이터 처리는 개인정보 처리방침에 따라 이루어집니다.
모두 수락 설정 거부