PHPフォーム提出データ紛失問題


今日、ユーザexcelのインポートの処理中に、小さな問題が発生しました.
ユーザーがexcelをインポートした後、PHPExcelでインポートデータを読み込み、1つのフォームをレンダリングし、ユーザーはフォームを表示することで、インポートしたデータの完全性を確認し、最後に入庫を確認する必要があります.
しかし、ユーザexcelが導入したデータが比較的多いため、フォームレンダリング後に6000を超えるinputがあり、コミット時(POST)は直接採用されたフォームコミットであり、バックグラウンドでは前のデータのほんの一部しか読み取れない.
ついせき
1.フォーム発行要求の整合性の表示
コミット時のhttpリクエストを追跡すると、すべてのデータが正常にコミットされていることがわかります.
2.要求データがphpまたはnginxの制限を超えているかどうかを確認するRequest Headersの下のContent-Lengthを見ると、218558 B、すなわち20KB程度しかないことが分かった.これは限定値に達していないに違いない.
3.元の要求データをfile_get_contents('php://input')で直接取得する
直接$_POSTで取得したデータはほんの一部であるため、直接php://inputで元の入力データを取得し、印刷するとこのような送信で取得したデータは完全であることが分かった.
4.関数parse_strによって元の要求パラメータを解析する
元の入力データをparse_strで解析すると
...

$origin = file_get_contents('php://input');

parse_str($origin, $result);

var_dump($result);

私は間違いを犯した.
Warning: parse_str(): Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini

ここまで来たら、問題がどこにあるかわかるはずです.
5.修正php.inimax_input_var数量
#     php.ini   
# How many GET/POST/COOKIE input variables may be accepted
# max_input_vars = 10000

デフォルトの構成では、要求(GET/POST/COOKIE)の最大input数は1000個のみ許可されます.php.inimax_input_varの値を適切に修正した後、問題は解決します.
もちろん、最後にajaxを通じてjsonフォーマットのデータを提出することによって解決されました.結局、php.iniの構成を修正するのは理想的ではありません.
の最後の部分phpにこの制限があることに気づかなかったため、ここで転覆しました.@freyoの指摘に感謝します.あなたは私たちの大神です.