私は現在、提出時に渡す必要がある1000以上の変数を持つ巨大なフォームを持っています。現在のところ、PHPはこれを1000個の変数に制限しており、PHPを回避するにはphp.iniを編集する必要があります。
私はかなり悪い習慣だと知っていますが、回避策はありません。おそらく、$ _POST変数を同じ連想配列階層のチャンクに分割して、チャンク間でループして利用することができますか? max_input_vars
OR
の上限を増加させることにより
私は現在、提出時に渡す必要がある1000以上の変数を持つ巨大なフォームを持っています。現在のところ、PHPはこれを1000個の変数に制限しており、PHPを回避するにはphp.iniを編集する必要があります。
私はかなり悪い習慣だと知っていますが、回避策はありません。おそらく、$ _POST変数を同じ連想配列階層のチャンクに分割して、チャンク間でループして利用することができますか? max_input_vars
OR
の上限を増加させることにより
php.iniのファイル あなたは、単一のJSONエンコードされたパラメータにすべての入力を組み合わせること
php_value max_input_vars 6000
php_value suhosin.post.max_vars 6000
php_value suhosin.request.max_vars 6000
私はこれを避けようとしています。 php.iniに触れることなく、どんな方法で? – theflarenet
次に 'ini_set'を試してください –
申し訳ありません!私はあなたの投稿を誤解しました。私はini_setを試しましたが、配列は切り捨てられました。 (私も10000を使った)。これはini_setには適していないようです。 – theflarenet
JavaScriptを使用htaccessファイルでそれを変更することができます。ここで
あなたはjQueryのを使用してそれを行うことができる方法です:PHPで
$("#formid").submit() {
var params = JSON.stringify($(this).serializeArray());
$(this).find(":input:not(#params)").prop("disabled", true); // prevent submitting the real inputs
$("<input>", {
type: 'hidden',
name: 'params'
value: params
}).appendTo(this);
});
、あなたはその後、どうなる:ボタンはserializeArray()
により符号化されたパラメータに含まれていません
$_POST = json_decode($_POST['params']);
注意。したがって、PHPが何かを行う場合、
if (isset($_POST['submit']))
は動作しません。それを明示的にparams
に追加する必要があります。
params.submit = "submit";
制限を拡大しますか? –
私は1000が非常に多くの 'POST'値であることをアドバイスしたいと思います。複数のフォーム値を連鎖している場合は、すべてのデータを格納する前にセッションを使用するのが好ましいかもしれません。 –
フォームを表示し、私はphp.iniファイルを編集することを意図的に避けています。私はこの不都合を回避するための他の可能な選択肢を探しています。 – theflarenet