Почему PHP принимает только 1000 значений
Если вы попытаетесь отправить на обработку PHP с соответствующими настройками по умолчанию более 1000 значений, то будет обработана только именно тысяча, а остальные проигнорируются, при этом появится следующее предупреждение: Warning: Unknown: Input variables exceeded 1000. To increase the limit change max_input_vars in php.ini. in Unknown on line 0
Под одним значением подразумевается одна GET- / POST-переменная или один элемент массива.
Это говорит о том, что превышено допустимое количество входящих переменных, так как по умолчанию для директивы max_input_vars
, отвечающей за это, установлено значение 1000
. Сделано это для снижения вероятности сбоев в случае атак с использованием хеш-коллизий, как сказано на официальном сайте.
Если вам нужно увеличить количество обрабатываемых значений, то установите в php.ini
соответствующую запись:
max_input_vars
= число
Код для тестов
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Thousand vars test</title>
</head>
<body>
<h1>Thousand vars test</h1>
<a href="<?= $_SERVER['SCRIPT_NAME']; ?>">Reload</a>
<form method="post">
<?php
for ( $i = 1; $i <=1001 ; $i++ ) {
echo '<input type="checkbox" name="thousand[]" checked="checked" value="' . $i . '">';
}
?>
<input type="submit" value="GO">
</form>
<?php print_r( $_POST ); ?>
</body>
</html>