Problème de formulaires avec max_input_vars (PHP 5.3.9+)
Rédigé par jack
8 commentaires
Classé dans : Programmation
Concrètement cela veut dire que si vous avez un grand formulaire qui contient plus de 1000 champs (champ texte, checkbox, hidden, etc...), lorsque vous allez traiter les variables $_POST après la soumission du formulaire, seuls les 1000 premières variables $_POST seront accessibles, les autres ne seront pas présentes dans le tableau $_POST.
Voilà donc une restriction, qui pour des raisons de sécurité est justifée afin d'éviter des attaques par déni de service, mais qui sera vite un gros problème si vous avez à traiter des gros formulaires.
Il y a trois solutions pour passer outre cette restriction.
Solution 1
Si vous avez accès au fichier php.ini sur votre serveur, éditez le et recherchez le paramètre max_input_vars. Changez sa valeur 1000 par une plus grande en fonction de vos besoins, pour avoir par exemple:
max_input_vars = 3000
Solution 2
Si vous n'avez pas accès au php.ini, il reste la solution du fichier .htaccess.
A la racine de votre site éditez ou créez un fichier .htaccess dans lequel vous mettrez sur la 1ère ligne l'instruction suivante:
php_value max_input_vars 3000
Solution 3
Dernière solution: utiliser l'instruction init_set dans un fichier php pour modifier la valeur du paramètre max_input_vars de cette façon:
ini_set('max_input_vars', 3000);