Wie kann ich in PHP mit mehreren Formularfeldern mit demselben Namen umgehen?

Barbara Streisand
Freigeben: 2024-11-23 04:19:25
Original
161 Leute haben es durchsucht

How Can I Handle Multiple Form Fields with the Same Name in PHP?

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>
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage