JQuery에서 Ajax 요청과 상호 작용할 때 $_POST
대신 php://input
메서드를 사용하도록 지시되었습니다. 내가 이해할 수없는 것은 이것을 사용하는 것의 이점이 글로벌 방법 $_POST
또는 $_GET
인 것입니다.
답변
이유는 콘텐츠 유형에 관계없이 php://input
이 요청의 HTTP 헤더 뒤에 모든 원시 데이터를 반환하기 때문입니다.
는 PHP 슈퍼 전역 $_POST
가 만 가있다 랩 데이터 중
application/x-www-form-urlencoded
(간단한 양식 - 게시물에 대한 표준 콘텐츠 형식) 또는multipart/form-data-encoded
로 가정된다 (대부분 파일 업로드에 사용)
이것은 유일한 콘텐츠 유형이 must be supported by user agents이기 때문입니다. 따라서 서버와 PHP는 전통적으로 다른 컨텐츠 유형을 기대하지 않습니다 (그렇다고해도 그렇지 못하다는 의미는 아닙니다). 당신은 단순히 좋은 오래된 HTML form
를 POST 경우
따라서, 요청은 다음과 같이 보입니다 :
POST /page.php HTTP/1.1
key1=value1&key2=value2&key3=value3
을하지만 Ajax를 많이 작업하는 경우,이 probaby도 유형보다 복잡한 데이터를 교환 포함 (string, int, bool) 및 구조체 (배열, 객체)를 사용하므로 대부분의 경우 JSON이 최선의 선택입니다. 그러나 JSON 페이로드와 요구는 다음과 같이 보일 것입니다 :
POST /page.php HTTP/1.1
{"key1":"value1","key2":"value2","key3":"value3"}
내용은 지금 것 application/json
(또는 위에서 언급 한의 이상 없음), 그렇게 처리하는 방법을 알고하지 않습니다 -wrapper PHP의 $_POST
그 (아직).
데이터가 여전히 존재하므로 래퍼를 통해 액세스 할 수 없습니다. 따라서 file_get_contents('php://input')
(as long as it's not multipart/form-data
-encoded)을 원시 형식으로 직접 가져와야합니다.
XML 데이터 또는 기타 비표준 콘텐츠 형식에 액세스하는 방법이기도합니다.
php://input
은 데이터의 원시 바이트를 줄 수 있습니다. POST 된 데이터가 AJAX POST 요청의 경우 인 JSON 인코딩 구조 인 경우 유용합니다.
여기에 그냥 할 수있는 기능 : 당신은 기존의 POST 제출 한 형태에서 키 - 값 데이터를 처리 할 때
/**
* Returns the JSON encoded POST data, if any, as an object.
*
* @return Object|null
*/
private function retrieveJsonPostData()
{
// get the raw POST data
$rawData = file_get_contents("php://input");
// this returns null if not valid json
return json_decode($rawData);
}
$_POST
배열이 더 유용하다. POST 된 데이터가 인식 된 형식 인 경우 일반적으로 application/x-www-form-urlencoded
입니다 (자세한 내용은 http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4 참조).
'json_decode'의 두 번째 매개 변수로 'true'를 전달하면 연관 배열이 반환됩니다. – VSG24
게시물 데이터 형식이 잘못되면 $ _POST에 아무 것도 포함되지 않습니다. 그러나 php : // 입력은 잘못된 형식의 문자열을가집니다.
예를 들어, 파일을 업로드하기위한 올바른 키 - 값 순서를 구성하지 않고 변수 이름이나 기타없이 모든 파일을 게시 데이터로 덤프하는 일부 아약스 응용 프로그램이 있습니다. $ _POST는 비어 있고 $ _FILES도 비어 있으며 php : // input은 문자열로 쓰여진 정확한 파일을 포함합니다.
- 1. $ _POST (PHP)
- 2. PHP 검사 $ _POST
- 3. PHP $ _POST 및 iframe
- 4. $ _POST 탈출 ','PHP
- 5. PHP implutable $ _POST [] array
- 6. PHP $ _POST 경고
- 7. PHP 빈 $ _POST
- 8. PHP if ($ _POST) annoyance
- 9. 테이블이있는 PHP $ _POST 함수
- 10. PHP 보안 - - $ _POST 사출
- 11. PHP $ _POST 변수
- 12. 이상한 $ _POST PHP 문제
- 13. PHP $ _POST 및 변수
- 14. PHP : $ _POST/$ _ 변수
- 15. PHP $의 _POST 오류
- 16. PHP $ _REQUEST $ _GET 또는 $ _POST
- 17. 동적으로 $ _POST 행을 생성합니다. PHP
- 18. PHP _POST 배열이 비어 있습니다.
- 19. $ _POST, $ _FILES를 수정하는 PHP 모듈
- 20. PHP : 함수에서 $ _GET 및 $ _POST?
- 21. $ _POST 배열 빈 PHP 업데이트가 실패합니다.
- 22. jQuery/PHP - $ _POST 데이터를 저장하는 WYSIWYG 편집기
- 23. mysql_query 함수에서 PHP $ _POST vars를 어떻게 작성해야합니까?
- 24. 문서 인쇄를 위해 PHP $ _POST 포맷하기
- 25. PHP - 질문하는 방법을 모르는 변수 및 $ _POST
- 26. PHP : 내 수업에 $ _POST 데이터를 보내시겠습니까?
- 27. PHP OOP newbie - $ _POST 데이터를 변수에 넣어야합니다.
- 28. jQuery Ajax Call과 PHP $ _POST [ 'data']
- 29. PHP : 많은 $ _POST []를 단축하는 방법;
- 30. PHP $ _GET과 $ _POST 정의되지 않은 문제
+1 "XML 데이터 또는 다른 비표준 콘텐츠 유형에 액세스하는 방법" – mandza
@Quasdank Android 앱에서 JSON을 PHP xampp 서버로 클라우드에 전송합니다 (http://stackoverflow.com/). 질문/36558261/json-from-from-compute-engine-servers-returns-null)하지만 file_get_contents ('php : // input')를 시도했을 때 제대로 작동하지 않습니다. 문자열 (0). 이것은 로컬 컴퓨터에서 작동하는 데 사용되었지만 클라우드에 배포 한 경우에는 작동하지 않습니다. 제발 도와 주실 수 있나요? –