>백엔드 개발 >PHP 튜토리얼 >내장 함수를 사용하지 않고 PHP에서 다중 부분/양식 데이터 POST 요청을 어떻게 구문 분석할 수 있습니까?

내장 함수를 사용하지 않고 PHP에서 다중 부분/양식 데이터 POST 요청을 어떻게 구문 분석할 수 있습니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-12-05 04:29:10448검색

How Can I Parse Multipart/Form-Data POST Requests in PHP Without Using Built-in Functions?

PHP의 개입 없이 멀티파트/양식 데이터 POST 요청 구문 분석

멀티파트 처리 시 php://input 및 $HTTP_RAW_POST_DATA의 제한에도 불구하고 /form-data POST 요청, 원시 데이터에 액세스할 수 있는 방법이 있습니다.

RAW 다중 부분/양식 데이터 구문 분석의 과제

PHP는 다중 부분/양식 데이터 요청을 자동으로 구문 분석하므로 원시 데이터를 직접 얻을 수 없습니다. 이는 PHP가 구문 분석할 수 없는 잘못된 형식의 데이터를 처리할 때 문제가 될 수 있습니다.

한계를 우회하는 해킹

해결책은 Apache 구성을 사용하여 요청 헤더를 수정하는 데 있습니다. 지령. Content-Type을 multipart/form-data에서 multipart/form-data-alternate로 변경하면 PHP가 요청을 구문 분석하지 않도록 속입니다.

Apache 구성 수정

다음 코드를 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> 

이 지시어는 Content-Type 헤더를 변경합니다. multipart/form-data에서 multipart/form-data-alternate로 /backend/XXX.php에 대한 수신 요청을 처리하여 PHP가 요청 구문 분석을 시도하는 것을 방지합니다.

원시 데이터 검색 및 구문 분석

구성을 수정한 후 원시 데이터를 php://input에서 검색하고 수동으로 구문 분석할 수 있습니다. 그러나 이 방법에는 한 가지 주의 사항이 있습니다. $_FILES 배열은 비어 있습니다.

이 해결 방법은 이상적이지는 않지만 기본 PHP 구문 분석이 실패하는 상황에 대한 솔루션을 제공합니다.

위 내용은 내장 함수를 사용하지 않고 PHP에서 다중 부분/양식 데이터 POST 요청을 어떻게 구문 분석할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.