PHP 게시물이 데이터를 수신하지 않는 경우 해결 방법: 1. php.ini의 max_input_vars를 5000으로 변경합니다. 2. "$GLOBALS['HTTP_RAW_POST_DATA']"를 통해 데이터를 얻습니다.
이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터
1: PHP는 POST 문제를 사용하여 일부 데이터를 얻을 수 없습니다.
PHP를 사용하여 개발된 프로젝트, 고객 피드백 테스트 단계 데이터가 성공적으로 저장되지 않았다고 합니다
그리고 이전 테스트에 합격했는데 고객 정보에 따르면 문제가 다시 나타났습니다
문제는 이렇습니다
고객님이 브라우저를 통해 저장했는데 일부 데이터가 저장되었습니다 하지만 일부 데이터는 성공적으로 저장되지 않았습니다
그리고 테스트를 통해 $_POST에 일부 데이터가 없지만 일부는 있다는 것을 발견했습니다
그리고 file_get_contents("php://input"); 데이터를 가져오는데 데이터를 처리해야 하고 코드도 많이 변경해야 하기 때문에
그래서 생각해보니 $_POST 문제도 해결해야 합니다
저도 처음에는 매우 당황했습니다. .$_POST를 모두 얻을 수 없다는 문제가 발생했는데, 정보를 얻을 수 있는 것은 이번이 처음입니다
$_POST가 데이터를 제출할 수 있기 때문에 제출 전에 데이터의 일부가 백그라운드로 전송되지 않았습니다. 아니면 백그라운드에서 수신이 안됐거나
그리고 브라우저를 통해 요청한 내용이 문제가 발견되지 않아 모든 데이터가 정상적으로 전송되었습니다
그러면 백그라운드에서 수신을 받지 못했다는 뜻입니다
알았습니다 테스트 도중 제출한 데이터를 수동으로 삭제했다가 다시 제출했습니다
백엔드 $_POST에서 모든 데이터를 얻을 수 있는데, 온라인으로 검색해 보니
$_POST에서 제출한 데이터에 크기 제한이 있다는 것을 알게 되었습니다
그런 다음 php.ini의 max_input_vars를 5000으로 변경하여 완벽하게 해결하세요
둘: $_POST가 php에서 프런트엔드 데이터를 받지 못하는 문제의 해결 방법
기본적으로 프런트엔드 요청 유형은 Content입니다. -Type:application/x-www-form-urlencoded. $_POST를 사용하여 데이터를 가져옵니다.
프론트 엔드 요청 유형이 Content-Type: application/json인 경우 $_POST만으로는 데이터를 얻을 수 없습니다. (예를 들어 vue.js의 axios, 기본 모드는 application/json입니다.)
이때 $GLOBALS['HTTP_RAW_POST_DATA']를 통해 구한 후 json_decode를 사용하여 객체로 변환할 수 있습니다.
$mypost = $GLOBALS['HTTP_RAW_POST_DATA']$postdata = json_decode($mypost);$username = $postdata->username;
정의되지 않은 인덱스: HTTP_RAW_POST_DATA 메시지가 표시되면 코드를 다음과 같이 변경하세요.
$mypost = isset($GLOBALS['HTTP_RAW_POST_DATA'])?$GLOBALS['HTTP_RAW_POST_DATA']:file_get_contents("php://input");$postdata = json_decode($mypost);$username = $postdata->username;
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP Post가 데이터를 수신할 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!