2012-02-29 9 views
20

私は大きなフォームを持っていますし、すべての要素の値が適切に送信されていることをFirebugから見ることができますが、print_r($ _ POST)私のmax_post_sizeは25Mに設定されているので、それは問題ではなく、php.iniを通して 'post'や 'max'のようなキーワードを検索したところ、何も見つかりませんでした。php投稿が1000個の変数に限定されています

1000は私が通過する要素の約1/4に過ぎないので、明らかにこれは私にとってかなり大きな問題です。私が得ることができる助けに本当に感謝します。

+13

1000個の変数のみ? –

+0

*(口)* ONE THOUSAND? – MacMac

+2

それはおそらくHTTPプロトコルの制限です(私はそれについて聞いたことはありませんが)。 POSTで送信される変数の数を最小限に抑える方法はありますか?私は、POST変数が9000以上あるサイトについて聞いたことがありません。 –

答えて

34

ここで行ったことを確認します。

max_input_vars, 1000 

は、ハッシュ衝突攻撃を防止するために導入: http://www.phpclasses.org/blog/post/171-PHP-Vulnerability-May-Halt-Millions-of-Servers.html をしかし、5.3.9に失敗しました:それが問題であるのであれば、あなたは5.3.10+にアップデートする必要があり http://www.phpclasses.org/blog/post/175-Another-Serious-Security-Bug-on-PHP-539.html

+2

'suhosin.post.max_vars = 1000'でもかまいません(もちろん、彼がSuhosinを使用している場合)。 – Crontab

+0

@Crontab、そうかもしれませんが、すべてのホスティング企業は5.3.10+にアップデートする必要があります:) –

+0

max_input_varsとsuhosin.post.max_vars設定について見ましたが、いずれもphp.iniにありません。私は5.3.6をインストールしました。 – jreed121

6

私は同様の状況がありました。配列の最初の1000要素のみをPOSTすることができました。

私の解決策は、implode()の配列を1つの長い文字列に、explode()をサーバー側に配置することでした。

json_encode()でも可能です。

7

私は、PHP v5.4.20を使用した1000の可変限界とまったく同じ問題を抱えていました。 php.iniファイルにはこのような 'max_input_vars'行が含まれていませんが、先頭の[PHP]セクションに挿入するための便利な場所を見つけ、 'max_input_vars = 10000'という行を追加してApacheを再起動し、 。

0

私はこの

$("#single-form").submit(function(event) { 
    event.preventDefault(); 
    var table_data = $(this).serialize(); 
    console.log(table_data); 
    // ajax call to handle the data 
} 

serialize機能は、すべてのフォームデータのURLエンコードされた文字列を与え、PHPファイル内だけで文字列を解析する機能parse_strを使用するように私はそれをやったjqueryの

を使用して解決策を考え出しました変数に変換する。

関連する問題