Zugriff auf rohe Multipart-/Formulardaten-POST-Daten
In PHP ist das Standardverhalten für Multipart-/Formulardaten-POST-Anfragen für Eingabedaten werden automatisch von PHP analysiert. Dies stellt ein Problem dar, wenn Sie Zugriff auf die rohen, nicht geparsten Daten benötigen.
Während sowohl php://input als auch $HTTP_RAW_POST_DATA für den Zugriff auf POST-Rohdaten verwendet werden können, funktionieren beide nicht für mehrteilige/Formulardatenanfragen.
Problemumgehung
Leider konnten die Rohdaten nicht abgerufen werden Multipart-/Formulardatenformulare sind mit herkömmlichen PHP-Methoden nicht möglich. PHP besteht darauf, die Daten selbst zu analysieren, wodurch sie für die manuelle Analyse nicht verfügbar sind.
Es gibt jedoch eine Problemumgehung, bei der die Apache-Konfiguration geändert wird. Durch Hinzufügen des folgenden Snippets zu Ihrer Apache-Conf-Datei können Sie den Inhaltstyp eingehender Anfragen ändern:
<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>
Dadurch wird PHP gezwungen, die Multipart-/Formulardaten-Anfrage als Multipart-/Formulardaten-Anfrage zu behandeln -alternate, verhindert automatisches Parsen. Mit dieser Problemumgehung können Sie auf die Rohdaten zugreifen, indem Sie sie aus der php://-Eingabe lesen und manuell analysieren.
Einschränkungen
Diese Problemumgehung ermöglicht Ihnen zwar den Zugriff auf Da es sich um Rohdaten handelt, gibt es auch Einschränkungen. Insbesondere ist das Superglobal $_FILES leer, da PHP die Formulardaten nicht analysiert.
Das obige ist der detaillierte Inhalt vonWie kann ich in PHP auf rohe Multipart-/Formulardaten-POST-Daten zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!