Natürlich spielt auch die Reihenfolge der <input>-Felder eine Rolle.
Auf diese Reihenfolge kann man sich aber nie verlassen. Weil der Frontender …
Aber der Enctype darf sie nicht verändern und das ist ganz Wesentlich! Enctype application/x-www-form-urlencoded und multipart/form-data verändern die Reihenfolge nicht.
Der "Frontender" aber schon. Der soll ja ein Design umsetzen - und da gilt "form follows function" nicht in Bezug auf die Programmierung des Backends. Also sendet man nicht "on" sondern vereinbart dass die Checkboxen (um die es hier geht) jeweils einen markanten und sprechenden Value haben und denkt (als "Backender") daran, eben diese Werte vor einer Auswertung, einem Vergleich oder einer Suche (z.B. in_array()) a) zu trimmen und b) mit etwas wie strtolower() zu behandeln um wenigstens solchen Schreibfehlern zu begegnen.
Ich bin auch bei meinem eigenen Zeug kein Freund von solchen Reihenfolgen. Beispiel aus dem PHP-Manual:
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));
... und da hätte ich die Reihenfolge selbst in der Hand.
Lieber notiere ich etwas mit Namen:
$sql = 'SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour';
$sth = $dbh -> prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth -> execute(array(':calories' => 150, ':colour' => 'red'));
oder, erst jetzt "gut":
$sql = '
SELECT
name, colour, calories
FROM
fruit
WHERE
calories < :calories
AND colour = :colour';
$stmt = $dbh -> prepare( $sql );
$stmt -> bindParam( ':calories', $calories );
$stmt -> bindParam( ':colour' , $color );
$calories = 150;
$color = 'red';
$stmt -> execute();
Ich fürchte mich nämlich davor, SELBST die Reihenfolge zu verwechseln und dann gegen "esoterischen Bugs" (beatovich) kämpfen zu müssen. Wer das (wie ich) schon mal hatte, der weiß sehr genau, wie garstig diese Käfer täuschen und tricksen damit man sie nicht erkennt. Aus dem Grund bin ich auch ein Freund einer nicht zeilensparenden, maximal übersichtlichen Notation.
Ansonsten bin ich nicht so überzeugt davon, durch den User-Agent Formulardaten in json zu packen und dann abzusenden. Jedenfalls nicht in jedem Fall. Grund: Mehr Code -> mehr Fehler.