Felix Riesterer: Checkbox von PHP nach HTML auslesen

Beitrag lesen

Lieber pl,

Der Value einer checkbox wird gesendet wenn:

  • das Attribut name gesetzt wurde
  • die checkbox gecheckt ist

sehr richtig (+1 von mir), sodass man dann in PHP so vorgehen muss, wenn man XSS vermeiden will:

// define what user may put in
$input = array(
    'name1' => '', // default value empty string
    'name2' => false, // checkbox - default is false
    'namex' => ''
);

// update with POST values
foreach ($_POST as $key => $value) {

    // do we expect such a key?
    if (array_key_exists($key, $input))
        $input[$key] = $value;
    }
}

// checkbox 'name2' set?
if ($input['name2']) {
    // yes!
}

Durch die lose Typisierung in PHP kann das vom Browser üblicherweise für angewählte Checkboxen übermittelte "on" (es sei denn, Du hast mit dem value-Attribut etwas anderes festgelegt) als eine Art true interpretieren, sodass if ($input['name2']) genau dann als true verstanden wird, wenn die Checkbox angewählt war. Wäre sie das nicht, so hätte der Browser deshalb kein Schlüssel-Wert-Paar für "name2" übermittelt - in $_POST wäre der Schlüssel dann nicht vorhanden gewesen und das in $input voreingestellte false für "name2" eben false geblieben.

Liebe Grüße,

Felix Riesterer.