php는 일반적으로 get 또는 post 값을 사용합니다. 이 기사에서는 주로 PHP가 get 값만 허용하고 POST 값을 허용할 수 없는 이유를 공유합니다. 이것이 모든 사람에게 도움이 되기를 바랍니다.
1. PHP가 POST 데이터를 얻는 여러 가지 방법
방법 1. 가장 일반적인 방법은 다음과 같습니다: $_POST['fieldname'];
설명: Content-Type: application/만 수신할 수 있습니다. x-www-form-urlencoded
에서 제출한 데이터설명: POST
방법 2, file_get_contents("php://input");
설명:
POST 읽기 허용 원시 데이터.
(인터페이스 테스트 도구를 사용할 때 헤더가 content-type: application/json으로 설정된 경우에만 이 방법을 사용할 수 있습니다.)
$HTTP_RAW_POST_DATA에 비해 메모리에 대한 부담이 적고 No. 특별한 php.ini 설정이 필요합니다.
php://input은 enctype="multipart/form-data"와 함께 사용할 수 없습니다.
설명:
Content-Type이 지정되지 않은 POST 데이터의 경우 file_get_contents("php://input")를 사용하여 원본 데이터를 얻을 수 있습니다.
실제로 이 방법은 PHP를 사용하여 모든 POST 데이터를 수신하는 데 사용할 수 있습니다. 콘텐츠 유형에 관계없이 바이너리 파일 스트림을 포함하는 것도 허용됩니다.
그러므로 방법 2가 가장 안전한 방법입니다
방법 3, $GLOBALS['HTTP_RAW_POST_DATA'];
참고:
항상 원본 POST 데이터가 포함된 $HTTP_RAW_POST_DATA 변수를 생성하세요.
이 변수는 인식할 수 없는 MIME 유형의 데이터가 발견될 때만 생성됩니다.
$HTTP_RAW_POST_DATA는 enctype="multipart/form-data" 양식 데이터에 사용할 수 없습니다.
게시된 데이터가 PHP에서 인식되지 않으면 $GLOBALS['HTTP_RAW_POST_DATA']를 사용하여
text/xml 또는
설명:
$GLOBALS['HTTP_RAW_POST_DATA']는 POST의 원본 데이터를 저장합니다.
$_POST 또는 $_REQUEST는 PHP에서 형식화된 데이터를 키=>값 형식으로 저장합니다.
그러나 POST 데이터가 $GLOBALS['HTTP_RAW_POST_DATA']에 저장되는지 여부는 centent-Type 설정에 따라 다릅니다. 즉, 데이터를 POST할 때 Content-Type을 명시적으로 지정해야 합니다: application/x-www-form-urlencoded, POST 데이터는 $GLOBALS['HTTP_RAW_POST_DATA']에 저장됩니다.
관련 권장 사항:
위 내용은 PHP는 왜 get 값만 허용하고 POST 값은 허용하지 않습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!