Menghuraikan Permintaan POST Berbilang Bahagian/Borang-Data tanpa Campur Tangan PHP
Walaupun terdapat batasan php://input dan $HTTP_RAW_POST_DATA dalam mengendalikan berbilang bahagian /form-data POST permintaan, terdapat cara untuk mengakses data mentah secara langsung.
Cabaran RAW multipart/form-Data Parsing
PHP secara automatik menghuraikan permintaan berbilang bahagian/form-data, menjadikannya mustahil untuk mendapatkan data mentah secara langsung. Ini boleh menjadi masalah apabila berurusan dengan data yang tidak diformatkan dengan betul yang tidak dapat dihuraikan oleh PHP.
Menggodam Sekitar Had
Penyelesaian terletak pada mengubah suai pengepala permintaan menggunakan konfigurasi Apache arahan. Dengan menukar Jenis Kandungan daripada berbilang bahagian/data-bentuk kepada berbilang bahagian/bentuk-data-ganti, PHP tertipu untuk tidak menghuraikan permintaan.
Pengubahsuaian Konfigurasi Apache
Kod berikut boleh ditambahkan pada konfigurasi Apache:
<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>
Arahan ini menukar pengepala Jenis Kandungan bagi permintaan masuk ke /backend/XXX.php daripada multipart/form-data kepada multipart/form-data-alternate, menghalang PHP daripada cuba menghuraikan permintaan.
Mengambil Data Mentah dan Menghuraikan
Selepas mengubah suai konfigurasi, data mentah boleh diambil daripada php://input dan dihuraikan secara manual. Walau bagaimanapun, kaedah ini mempunyai satu kaveat: tatasusunan $_FILES akan kosong.
Penyelesaian ini tidak sesuai, tetapi ia menyediakan penyelesaian untuk situasi di mana penghuraian PHP lalai gagal.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghuraikan Permintaan POST Berbilang Bahagian/Data dalam PHP Tanpa Menggunakan Fungsi Terbina dalam?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!