Forum: PC-Programmierung HTML und php, Checkboxwerteuebertragung


von Probatio (Gast)


Lesenswert?

Hallo,

im HTML-Code hab ich stehen:
1
<input type="checkbox" name="nobutton" value="123">Test<br>

im php-Script:
1
$nobutton = $_POST['nobutton'];
2
echo "$nobutton";

Klicke ich jetzt auf der HTML-Seite die Checkbox stehen und rufe dann 
das php-Script auf, dann erscheint der Wert "on" bzw. "123", was ich mit 
"value=" gesetzt habe.
Klicke ich keinen Haken an und rufe dann das php-Script auf, dann wird 
kein Wert übergeben und das php-Script kennt die Variable "nobutton" 
nicht.

Gibt es da einen Trick? Kann ich die "Variable" nobutton mit einem 
Standardwert belegen?

von doedel (Gast)


Lesenswert?


von T.roll (Gast)


Lesenswert?

Probatio schrieb:
> Klicke ich keinen Haken an und rufe dann das php-Script auf, dann wird
> kein Wert übergeben

Ist nun mal so festgelegt.

Probatio schrieb:
> Gibt es da einen Trick?

Ja.
1
if (isset ($_POST['nobutton']))
2
$nobutton = $_POST['nobutton'];
3
else
4
$nobutton = 'Du hast die Checkbox nicht angeklickt!!!';

von anonymous (Gast)


Lesenswert?

ohne javascript fällt mir auf die schnelle nur sowas in der richtung ein
1
$nobutton = "default";
2
if(isset($_POST['nobutton'])) {
3
    $nobutton = $_POST['nobutton'];
4
}

mit javascript (jquery) könntest du sowas ähnliches probieren:
1
<form>
2
<input type="checkbox" name="nobutton" value="123" data-default="456">Test<br>
3
</form>
4
5
<script type="text/javascript">
6
$('form').submit(function() {
7
  $(this).find("input[type='checkbox']:not(:checked)").each(function() {
8
    $(this)
9
      .attr('checked', 'checked')
10
      .prop('checked', true)
11
      .val($(this).data('default'));
12
  });
13
});
14
</script>

beides nur auf die schnelle zusammengeschrieben, kann durchaus sein, 
dass da fehler drinnen sind...

von TestX .. (xaos)


Lesenswert?

normalerweise verwendet man ein hidden-field mit dem gleichen namen wie 
die checkbox, welches den default wert enthält:
1
<input type="hidden" value="0" name="box0" />
2
<input type="checkbox" value="1" name="box0" />

trotzdem sollte man serverseitig alle benötigten variablen/default werte 
vorhalten, um so ein unerwartetest verhalten zu verhinden! z.B. kann man 
ein assoziatives array mit allen erwarteten werten anlegen und bei 
bedarf auf die defaults ausweichen.
1
// werte die man im programm verwendet
2
$postData = array();
3
4
// default werte
5
$postDefaults = array(
6
    'box0' => '0',
7
    'box1' > '1'
8
);
9
10
// werte kopieren bzw. defaults verwenden
11
foreach ($postDefaults as $key => $value){
12
   if (isset($_POST[$key])){
13
      $postData[$key] = $_POST[$key];
14
   }else{
15
      $postData[$key] = $value;
16
   }
17
}

durch dieses vorgehen werden effektiv möglich angriffsmöglichkeiten 
verhindert...dies ist gerade als anfänger wichtig...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.