Parsen von Multipart-/Formulardaten-POST-Anfragen ohne Eingreifen von PHP
Trotz der Einschränkungen von php://input und $HTTP_RAW_POST_DATA bei der Verarbeitung von Multipart /form-data POST-Anfragen, gibt es eine Möglichkeit, auf die Rohdaten zuzugreifen direkt.
Die Herausforderung des Parsens von RAW-Multipart-/Formulardaten
PHP analysiert Multipart-/Formulardatenanforderungen automatisch, sodass es unmöglich ist, die Rohdaten direkt zu erhalten. Dies kann ein Problem sein, wenn es um falsch formatierte Daten geht, die PHP nicht analysieren kann.
Die Einschränkung umgehen
Die Lösung liegt in der Änderung des Anforderungsheaders mithilfe einer Apache-Konfiguration Richtlinie. Durch die Änderung des Inhaltstyps von multipart/form-data in multipart/form-data-alternate wird PHP dazu verleitet, die Anfrage nicht zu analysieren.
Apache-Konfigurationsänderung
Der folgende Code kann zur Apache-Konfiguration hinzugefügt werden:
<Location "/backend/XXX.php"> SetEnvIf Content-Type ^(multipart/form-data)(.*) NEW_CONTENT_TYPE=multipart/form-data-alternate OLD_CONTENT_TYPE= RequestHeader set Content-Type %{NEW_CONTENT_TYPE}e env=NEW_CONTENT_TYPE </Location>
Diese Direktive ändert den Content-Type-Header eingehender Anfragen in /backend/XXX.php von multipart/form-data zu multipart/form-data-alternate, wodurch PHP daran gehindert wird, die Anfrage zu analysieren.
Rohdaten abrufen und analysieren
Nachdem die Konfiguration geändert wurde, können die Rohdaten von php://input abgerufen und manuell analysiert werden. Allerdings hat diese Methode eine Einschränkung: Das $_FILES-Array ist leer.
Diese Problemumgehung ist nicht ideal, bietet aber eine Lösung für Situationen, in denen die standardmäßige PHP-Analyse fehlschlägt.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrteilige/Formulardaten-POST-Anfragen in PHP analysieren, ohne integrierte Funktionen zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!