5

ページに大量の入力要素があり、ajax 経由でサーバーに送信する必要があります。

配列を作成して送信しようとしましたが、PHP の警告が表示されました。

そこで、この警告をバイパスして、すべての巨大な配列をシリアル化された文字列に変更することにしました。その結果、警告は消えますが、サーバー側で切り捨てられたデータを取得する必要があります。

PS どちらの場合も、 max_input_vars 変数を増やすことで問題を解決できます。しかし、2 番目のデータでは、parse_str($_POST['data'], $data)関数によって切り捨てられます。

巨大な文字列を解析しようとすると、「max_input_vars」の制限が適用されるのはなぜですか?

4

2 に答える 2

2

で変更できますphp.ini。デフォルトの制限は 1000 です。これは、マニュアルに記載されている内容です。

受け入れられる入力変数の数 (上限は $_GET、$_POST、および $_COOKIE スーパーグローバルに個別に適用されます)。このディレクティブを使用すると、ハッシュ衝突を使用するサービス拒否攻撃の可能性が軽減されます。このディレクティブで指定されたよりも多くの入力変数がある場合、E_WARNING が発行され、それ以降の入力変数は要求から切り捨てられます。この制限は、多次元入力配列の各入れ子レベルにのみ適用されます。

したがって、基本的には各ネストレベルに適用されます。

そうでない場合は、post_max_size投稿されているコンテンツの長さも切り捨てられる可能性があることを確認してください。

于 2013-08-15T05:24:07.087 に答える