8

私は多次元配列を持っています。これは 426 個の小さな配列で構成されており、これも 4 つの属性で構成されています。以下は、426 個の配列の 1 つの例です...

    array( //Main array
          0 => array( //1 of 426 arrays
               'name' => 'Danny', 
               'email' => 'your@email.com', 
               'picture_url' => 'http://www.website.com', 
                'score' => 89
          ),
    )

jqueryのajax関数を含むこの配列をphpファイルに投稿しています。これにより、それらがデータベースに追加されます...私の問題は、配列がphpファイルに投稿されたときに切り落とされているように見えることです。配列の約半分だけが実際にphpファイルに到達します...

これにより、ajax 経由で投稿する場合、ファイル サイズの制限がある可能性があると考えるようになりました。ただし、私の配列のサイズは比較的小さいようです..

私はWAMPでアプリケーションを実行しています..

何が起こっている可能性があるのか​​ 誰かが光を当てることができますか?

アップデート:

私は自分の配列を次のように投稿しています:

$.ajax({
  type: "POST",
  url: "invite_friends.php",
  data: {
    theID: me.id,
    friends: multidimensional_array //This is the array <---
  },
  success: function(data, textStatus, jqXHR) {
    return console.log(data);
  },
  error: function(jqXHR, textStatus, errorThrown) {
    return alert("Error: Oops, there has been a problem");
  }
});

そして、私は自分の配列を(invite_friends.phpで)次のように取得します..

if($_POST['friends']) {
    $friends = $_POST['friends'];   
} else {
    $friends = FALSE;
} 
4

4 に答える 4

16

php.iniファイルを開いて、次の行を設定 (または作成)する必要があります。

max_input_vars = 1000000

max_input_varsデフォルト値は 1000 です。これは、配列を合計 1000 要素で切り捨てます。これを非常に大きな数値に変更するだけです (私の場合は、100 万に設定する必要がありました)。

PHPマニュアルから:

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

注意:マニュアルに記載されているように、このデフォルトの制限はサービス拒否攻撃を防ぐために設定されています。

これは古い質問ですが、これが役立つことを願っています。

于 2012-10-13T20:46:18.300 に答える
1

私はまったく同じ問題を抱えています。

$.ajax({data:{x:x,y:y}});

最後に、一部の値が日付形式 (オブジェクト) であることが判明しました。それらが単純な型 (文字列または整数) に変換されると、問題は解決されます。これが役立つことを願っています。

于 2016-06-14T23:01:46.897 に答える
0

タイムアウトしないように、.htaccess と max_input_time で php_value post_max_size を少なくとも 16M に設定してみてください。

php_value post_max_size 16M
php_value max_input_time 4000
于 2012-09-17T16:04:38.213 に答える