http://stackoverflow.com/questions/12169818/in-php-how-can-i-detect-that-input-vars-were-truncated-due-to-max-input-vars-be
http://php.net/manual/ja/info.configuration.php
引数の制限
max_input_vars で指定された数以上の引数を受け取るとWarningを出力し、
引数をそれ以上受け取らない。
大量の引数を受け取らないような設計にするのが無難。
検知
max_input_vars 以上の引数があるかどうかを検知する方法
方法1
処理の冒頭でWarningを含むエラーの存在を確認する。
max_input_vars 以外のエラーやワーニングも拾ってしまうので注意。
if (($error = error_get_last()) !== null) { echo 'got error:'; var_dump($error); return; }
方法2
引数の数をチェックする。
function checkMaxInputVars() { $max_input_vars = ini_get('max_input_vars'); # Value of the configuration option as a string, or an empty string for null values, or FALSE if the configuration option doesn't exist if($max_input_vars == FALSE) return FALSE; $php_input = substr_count(file_get_contents('php://input'), '&'); $post = count($_POST, COUNT_RECURSIVE); echo $php_input, $post, $max_input_vars; return $php_input > $post; }
対策
大量のデータを送らなければならないときは、max_input_vars の上限を上げるか
jsonを送る
jsonでデータを送る
http://d.hatena.ne.jp/hiro_nemu/20090826/1251284397
// フォームを取得 var form = $('form-id'); var param = {}; // フォームの内容を取得 // serializeArrayの戻り値は[{key: 'キーの名前', value: '値'}]という形式になっている $(form.serializeArray()).each(function(i, v) { param[v.name] = v.value; }); var json = JSON.stringify(param);
php側は
var_dump(json_decode($_POST["json"]));
[カテゴリ: プログラミング言語 > PHP]
[通知用URL]
Tweet
最終更新時間:2014年12月06日 14時35分33秒