저는이 문제를 12 시간 넘게 연구했지만 성공하지 못했습니다.POST 요청의 중첩 배열이 PHP에 의해 완전히 구문 분석되지 않았습니다.
Google에는 정부 고객을 위해 제작 한 대규모 사용자 정의 CMS가 있습니다. 이 소프트웨어는 PHP 5.3.3에서 개발되었습니다. 초기 배포는 PHP 5.2.2에서 수행되었지만 몇 가지 문제가 있었지만 결국 서버를 PHP 5.3.8로 업그레이드했습니다. 서버에 배포되는 버전을 정확히 제어 할 수는 없습니다.
쇼 스토퍼 문제가 발생했습니다. 중첩 된 배열의 최대 5 레벨까지 POST를 통해 큰 양식을 제출하는 AJAX 요청이 있습니다. 이것은 몇 개월 동안 잘 작동했지만, 갑자기 새로운 PHP 설치를 사용하여, 우리는 $ _POST 변수 안에있는 데이터의 부분 디코드만을 얻습니다. 필자는 php : // 입력을 검사하여 PHP가 모든 데이터를 수신했음을 확인했습니다 (데이터가 Firebug를 통해 브라우저에서 전송되었음을 확인했습니다).
이
은 우리가 디코딩 된 출력으로 받고있다Array
(
[db_required_fields] => Array
(
[awr_title] => Array
(
[en] => phil test eng
)
)
[subtitle_intro] => Array
(
[awr_subtitle] => Array
(
[en] =>
)
)
[products] => Array
(
[cp_recall] => Array
(
[1] => Array
(
[product_common_name] => Array
(
[en] =>
)
)
)
)
)
없는 무엇을 (내가 간결을 단축했습니다 위해서 var_dump를 통해, 이것은 당신에게 좋은 아이디어를 줄 것이다)의 각 [EN을 ]에는 피어 [fr] 배열 색인 항목이 있어야합니다. 예를 들어 [fr] 필 테스트 fr 항목이 있어야합니다. 두 번째 배열 수준의 다른 여러 인덱스 항목이 누락되었습니다. 요청 데이터 자체는 약 6-7Kb 정도로 크지 않습니다.
내가 한 일 : - 수호신은 종종 유사한 문제의 원인으로 언급 되었기 때문에 사용하지 못했습니다. - phpinfo()를 보았습니다. 작업중인 서버와 현재 작동중인 서버 모두에서 적절한 차이점을 식별하려고합니다. - 상황에 영향을 줄 수있는 모든 모듈과 옵션을 조사했습니다 (예 : mbstring).
이제 php : // 입력 데이터에 대한 내 자신의 파서 작성을 고려 중이지만 위험에 처할 수 있습니다.
의견이나 제안이 있으십니까?
정확히이 데이터를 서버로 전송하고 있습니까? 양식을 통해? 그렇다면 양식의 속성은 무엇입니까? 아니면 다른 PHP 스크립트에서 cURL POST 요청을 사용하고 있습니까? 아니면 심지어 클라이언트 측에서 AJAX POST? –
제 질문에서 언급했듯이, AJAX POST입니다. – Phil
양식에서 게시하는 배열을 공유 할 수 있습니까? 귀하의 JS와 PHP도하시기 바랍니다. – rroche