Maison >développement back-end >tutoriel php >Comment puis-je accéder aux données POST brutes multiparts/données de formulaire en PHP ?
Accès aux données POST brutes Multipart/Form-Data
En PHP, le comportement par défaut des requêtes POST multipart/form-data est pour le les données d'entrée doivent être analysées automatiquement par PHP. Cela pose un problème si vous avez besoin d'accéder aux données brutes non analysées.
Bien que php://input et $HTTP_RAW_POST_DATA puissent être utilisés pour accéder aux données POST brutes, aucun des deux ne fonctionne pour les requêtes multipart/form-data.
Solution de contournement
Malheureusement, l'obtention des données brutes pour Les formulaires multipart/form-data ne sont pas possibles avec les méthodes PHP conventionnelles. PHP insiste pour analyser les données lui-même, les rendant indisponibles pour une analyse manuelle.
Cependant, il existe une solution de contournement qui implique de modifier la configuration d'Apache. En ajoutant l'extrait suivant à votre fichier de configuration Apache, vous pouvez modifier le type de contenu des requêtes entrantes :
<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>
Cela forcera PHP à traiter la requête multipart/form-data comme multipart/form-data -alternate, empêchant l'analyse automatique. Avec cette solution de contournement, vous pouvez accéder aux données brutes en les lisant à partir de php://input et en les analysant manuellement.
Limitations
Bien que cette solution de contournement vous permette d'accéder au données brutes, elles présentent également des limites. Plus précisément, le superglobal $_FILES sera vide, puisque PHP n'analysera pas les données du formulaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!