>  기사  >  백엔드 개발  >  PHP가 post 값을 허용하지 않는 문제 해결

PHP가 post 값을 허용하지 않는 문제 해결

hzc
hzc원래의
2020-06-04 17:15:253500검색

PHP가 post 값을 허용하지 않는 문제 해결

이런 일이 발생하면 매개변수

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-urlencodedmultipart/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-Typeapplication/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-Typepplication/x-www-data-urlencodedmultipart/form-data인 경우, PHP는 요청 데이터를 다음으로 전달합니다. $_POST2. PHP가 Content-Type 유형을 인식할 수 없는 경우 http 요청 패키지의 해당 데이터가 $HTTP_RAW_POST_DATA.

3, Content-Typemultipart/form-data가 아닌 한, PHP는 http 요청 본문 데이터를 에 채우지 않습니다. php://input, 그렇지 않으면 다른 모든 것입니다. 채울 길이로, Content-Length로 지정됩니다.

4. Content-Typeapplication/x-www-data-urlencoded인 경우에만 php://input 데이터가 $_POST데이터가 일관됩니다.

5, php://input은 HTTPRAWPOSTDATA**와 동일하지만 php://input은 **HTTP_RAW_POST_DATA보다 효율적이므로 그럴 필요가 없습니다. php.ini

6. http 요청을 구성하세요. GET 형식에서 body 본문이 비어 있습니다. .

🎜🎜Solution🎜🎜🎜🎜php.ini를 수정🎜
enable_post_data_reading = On

always_populate_raw_post_data = On
🎜아파치를 다시 시작하여 문제를 해결하세요. 🎜🎜추천: "🎜PHP 튜토리얼🎜"🎜

위 내용은 PHP가 post 값을 허용하지 않는 문제 해결의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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