Umgang mit Formularfeldern mit identischen Namensattributen in PHP
Wenn Sie in PHP ein Formular mit mehreren Eingabefeldern mit demselben Namensattribut senden, es entsteht ein eigenartiges Verhalten. Nur der Wert des letzten Felds mit diesem Namen ist im Array $_POST verfügbar. Dies kann ein erhebliches Hindernis darstellen, wenn Sie versuchen, die Werte aller Felder mit demselben Namen abzurufen.
Begründung des Verhaltens
PHP analysiert die rohe Abfragezeichenfolge, um sie aufzufüllen das $_POST-Array und überschreibt alle vorhandenen Werte mit demselben Namen. Wenn daher mehrere Felder mit demselben Namen gefunden werden, wird nur das letzte aufgezeichnet.
Array-strukturierte Feldnamen
Um dieses Problem zu beheben, wird empfohlen um jedem Eingabefeld einen Array-strukturierten Namen zuzuweisen. Anstatt sie beispielsweise „foo“ und „bar“ zu nennen, könnten Sie auch „foo[]“ und „bar[]“ verwenden. Durch diese Änderung wird ein Array im $_POST erstellt, in dem der Schlüssel der allgemeine Name ist und die Werte in einem Array gespeichert werden.
Beispielcode mit Array-strukturierten Feldnamen
<form method="post"> <input name="a[]" value="foo"/> <input name="a[]" value="bar"/> <input name="a[]" value="baz"/> <input type="submit" /> </form>
In diesem Beispiel wäre $_POST['a'] ein Array mit ["foo", "bar", "baz"].
Zugriff auf die Rohabfragezeichenfolge
Wenn Sie alternativ Zugriff auf die Rohabfragezeichenfolge benötigen, können Sie file_get_contents('php:/ verwenden /input')-Funktion. Dadurch erhalten Sie die gesamte Zeichenfolge, die Sie dann selbst analysieren können.
Beispielcode für die Analyse einer Rohabfragezeichenfolge
$post = array(); foreach (explode('&', file_get_contents('php://input')) as $keyValuePair) { list($key, $value) = explode('=', $keyValuePair); $post[$key][] = $value; }
Dieser Code würde ein Array erstellen wobei jeder Name einem Array von Werten zugeordnet wird, wodurch das Problem mehrerer Felder mit demselben Namensattribut gelöst wird.
Das obige ist der detaillierte Inhalt vonWie kann ich in PHP mit mehreren Formularfeldern mit demselben Namen umgehen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!