Днес ми се наложи в една html форма да сложа 500 $_POST променливи(input полета и форма с method='post') и да ги събмитна(изпратя|submit). Обаче когато ги изпратя не се случваше нищо. Странно. Започнах да изследвам проблема и установих, че ако $_POST променливите(input полетата) са 199 ги изпраща към Apache и си работи напълно коректно, обаче когато са повече от 199 не иска да ги изпрати. След 168 часа(шегувам се) се сетих, че имам инсталиран Suhosin и от него може да се ограничава именно броя на $_POST променливите. Редактирах конфигурационния файл на suhosin (или php.ini зависи как е конфигурирано) да пуска 2000 $_POST променливи и всичко се нареди както перфектно нареждане на Рубик.
/etc/php5/apache2/conf.d/suhosin.ini
# configuration for php suhosin module
extension=suhosin.so
suhosin.post.max_vars = 2000
suhosin.request.max_vars = 2000
cat interesno.php
<?php
$max_input=198; //Работи със стойностите по подразбиране в Suhosin
#$max_input=298; //Работи с НОВИТЕ стойности в Suhosin
if (!($_POST['submit']))
{
echo "<form action=" method='post'>";
for ($i=0;$i<=$max_input;$i++) { echo "<input type='text' value='$i' name='dhstudio$i'><br>"; };
echo "<input type='submit' name='submit' value='ribka'></form>";
}
else
{
foreach ( $_POST as $key => $value ) { print $key . " " . "=" . " " . $value; print "<br>"; }
};
?>
Хей за хората които не ползват Suhosin или ползват най- обикновен Apache(нямам впредвид буквално най- обикновен) с php няма да го имат този проблем т.е. могат да добавят много голям брой $_POST заявки.