⊗ppPmFmChcN 307 of 447 menu

A jelölőnégyzetek használatának finomságai PHP-ben

Tegyük fel, hogy a formunkban csak egy jelölőnégyzet van:

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

Tegyük fel, hogy az űrlapfeldolgozó kódunk így néz ki:

<?php if (!empty($_GET)) { // ha az űrlap elküldésre került if (isset($_GET['flag'])) { // ha a jelölőnégyzet be van jelölve echo 'bejelölt'; } else { echo 'nincs bejelölve'; } } ?>

Problémába fogunk ütközni - ha a jelölőnégyzet nincs bejelölve, akkor, mivel az űrlapban a jelölőnégyzeten kívül nincsenek más elemek, a $_GET egy üres tömböt fog tartalmazni. Ez azt jelenti, hogy az űrlapfeldolgozó kódban nem fogunk belépni az első if feltételbe, amely az űrlap elküldését ellenőrzi.

A probléma megoldására egy speciális trükköt alkalmaznak: létrehozunk egy rejtett inputot ugyanazzal a névvel, mint a jelölőnégyzetünké. Ebben az esetben a rejtett input értékét nullára állítjuk, a jelölőnégyzetét pedig egyre:

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

Ebben az esetben a következő történik. Ha a jelölőnégyzet nincs bejelölve, akkor csak a rejtett input értéke kerül elküldésre a szerverre. Ha viszont a jelölőnégyzet be van jelölve, akkor mindkét érték, ugyanazzal a névvel, elküldésre kerül a szerverre. De mivel a jelölőnégyzet értéke lesz a második, ez egyszerűen felülírja az elsőt.

Tehát mostantól a jelölőnégyzetünk vagy nullát, vagy egyet fog küldeni a szerverre:

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

Használjuk ezt az ellenőrzésünkben:

<?php if (!empty($_GET)) { if ($_GET['flag'] === '1') { echo 'bejelölt'; } else { echo 'nincs bejelölve'; } } ?>

Kérdezd meg a jelölőnégyzet segítségével a felhasználótól, hogy elmúlt-e már 18 éves vagy sem. Ha igen, engedélyezd a számára a hozzáférést az oldalhoz, ha nem - ne engedélyezd.

Magyar
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
A weboldal működéséhez, elemzéshez és személyre szabáshoz sütiket használunk. Az adatfeldolgozás a Adatvédelmi irányelvek szerint történik.
összes elfogadása beállítás elutasítás