이런 일이 발생하면 매개변수
Content-Type의 값을 확인해야 합니다. 헤더의
php://input
은 처리되지 않은 POST 데이터를 읽을 수 있습니다. $HTTP_RAW_POST_DATA
와 비교할 때 메모리에 대한 부담이 적고 특별한 php.ini 설정
이 필요하지 않습니다. enctype=multipart/form-data
에는 php://input
을 사용할 수 없습니다php://input
可以读取没有处理过的POST数据。相较于$HTTP_RAW_POST_DATA
而言,它给内存带来的压力较小,并且不需要特殊的php.ini设
置。php://input
不能用于enctype=multipart/form-data
不过我通过代码对比总结,得出结果如下:
1.Coentent-Type
为application/x-www-data-urlencoded
和multipart/form-data
两种情况下,PHP会将请求数据传递给$_POST
2.PHP不能识别的Content-Type
类型的时候,会将http请求包中相应的数据填入变量$HTTP_RAW_POST_DATA
.
3, 只要Content-Type
不为multipart/form-data
的时候,PHP将不会把http请求body体数据填入php://input
,否则其它情况都会。填入的长度,由Content-Length
指定。
4,只有Content-Type
为application/x-www-data-urlencoded
时,php://input
数据才跟$_POST
数据相一致。
5,php://input
与HTTPRAWPOSTDATA∗∗.相同,但是php://input比∗∗HTTP_RAW_POST_DATA
更效率,并不需要配置php.ini
6.http
请求的,GET
形式下,body
1. Coentent-Type
이 pplication/x-www-data-urlencoded
및 multipart/form-data
인 경우, PHP는 요청 데이터를 다음으로 전달합니다. $_POST
2. PHP가 Content-Type
유형을 인식할 수 없는 경우 http 요청 패키지의 해당 데이터가 $HTTP_RAW_POST_DATA.
Content-Type
이 multipart/form-data
가 아닌 한, PHP는 http 요청 본문 데이터를 에 채우지 않습니다. php://input
, 그렇지 않으면 다른 모든 것입니다. 채울 길이로, Content-Length
로 지정됩니다. 4. Content-Type
이 application/x-www-data-urlencoded
인 경우에만 php://input
데이터가 $_POST데이터가 일관됩니다. 5, php://input
은 HTTPRAWPOSTDATA**와 동일하지만 php://input은 **HTTP_RAW_POST_DATA
보다 효율적이므로 그럴 필요가 없습니다. php.ini
6. http
요청을 구성하세요. GET
형식에서 body
본문이 비어 있습니다. .
enable_post_data_reading = On always_populate_raw_post_data = On
위 내용은 PHP가 post 값을 허용하지 않는 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!