00 Stimmen

PHP: Nur 1000 POST-Variablen werden gesendet

Frage von Gast | 23.10.2014 um 14:10

Ich habe eine HTML-Seite mit sehr vielen Checkboxen, Auswahlboxen und Eingabefeldern (Konfiguration vieler Einstellungen). Das ganze ist als HTML-Form angelegt und soll mit einem Submit-Button an ein PHP-Skript weitergeleitet werden.

Merkwürdigerweise kommen aber nicht alle Variablen bei meinem Skript an. Wenn man auf den Submit-Button klickt, werden nur die ersten 1000 Felder übertragen, der Rest wird abgeschnitten. Ich habe das herausgefunden, in dem ich "echo count($_POST[]);" aufgerufen habe.

Was ist da los? Ein Fehler in PHP? Was kann ich tun, um alle Variablen richtig zu übertragen? Man könnte die Variablen natürlich auf mehrere Formen verteilen, jedoch würde ich gerne bei meinem alten Design bleiben.

AntwortenPositivNegativDatumStimmen
1Beste Antwort1 Stimme

Seit der PHP Version 5.3.9. gibt es einen Wert "max_input_vars", der festlegt, wie viele Eingabe-Variablen maximal angenommen werden. Dieser Wert ist standardmäßig auf 1000 eingestellt und kann Ursache für dein Problem sein.

Du änderst den Wert zum Beispiel über folgenden Eintrag in der Konfiguration (php.ini):

max_input_vars = 5000

Wenn deine php.ini noch keinen Wert für "max_input_vars" enthält, kannst du ihn einfach hinzufügen.

Falls du auf deinem Server Suhosin verwendest, solltest du auch hier die Werte entsprechend anpassen:

suhosin.get.max_vars 5000
suhosin.post.max_vars 5000
suhosin.request.max_vars 5000

Auch die Datenmenge wird ab einer bestimmten Größe abgeschnitten. Schau dir dazu den Wert "post_max_size" in deiner PHP-Konfiguration an (in deinem Fall wird es aber wohl eher nur die Anzahl der Felder und nicht die Größe der Daten sein).

Du kannst anschließend über phpinfo() testen, ob die neuen Werte aktiv sind. Hinweis: Nicht vergessen, den Server neu zu starten.
23.10.2014 um 14:13

AntwortenPositiv Negativ
00 Stimmen

Falls du keinen Zugriff auf deine php.ini hast, kann auch der folgende Eintrag in deiner .htaccess helfen:

php_value max_input_vars 5000
php_value suhosin.get.max_vars 5000
php_value suhosin.post.max_vars 5000
php_value suhosin.request.max_vars 5000

Alternativ kann je nach Hoster auch in einem Unterverzeichnis eine php.ini oder eine user.ini (seit PHP 5.3) angelegt werden.

Mit ini_set("max_input_vars", 5000) kann man allerdings nicht arbeiten, das erlaubt PHP für diesen Wert nicht.
23.10.2014 um 14:13

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

PHP: Zeit und Performance messen

Tutorial | 0 Kommentare

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.