PHP データ損失の解決策: まずフォーム送信リクエストの整合性をチェックし、次にリクエスト データが PHP または nginx の制限を超えているかどうかを確認してから、「file_get_contents('php://」を通じて元のリクエストを直接取得します。 input')" データ; 最後に変更された max_input_var 量。
#PHP フォーム送信時のデータ損失の問題
今日、ユーザーの Excel インポートを処理しているときに小さな問題が発生しました 要件は次のとおりです。ユーザーが Excel をインポートした後、PHPExcel を使用してインポートされたデータを読み取り、フォームをレンダリングします。ユーザーはフォームを表示してインポートされたデータの整合性を確認し、最後にフォームへの入力を確認します。データベース。 ただし、ユーザーの Excel は大量のデータをインポートしているため、フォームのレンダリング後に 6,000 を超える入力があり、フォーム送信 (POST) が直接使用されます。結果として、以前のデータのごく一部しか読み取れなくなります。追跡
1. フォーム送信リクエストの整合性を確認します送信中に http リクエストを追跡すると、すべてのデータが不正であることがわかります。普通に提出しました。 2. リクエスト データが php または nginx の制限を超えていないか確認します。リクエスト ヘッダーの 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
# 默认的 php.ini 配置 # How many GET/POST/COOKIE input variables may be accepted # max_input_vars = 10000
PHP 中国語 Web サイトをご覧ください。 !
以上がPHPフォームで送信したデータが失われた場合の対処方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。