Webaholic - Blog


PHP Post-Variable verschwindet

Informationen gehen auf die unterschiedlichste Art und Weise verloren - das ist soweit keine neue Erkenntnis, ich bin gestern und heute aber auf ein Phänomän gestoßen, dass mich erstmal vor ein echtes Rätsel gestellt hat.

Ich habe ein Formular, welches dynamisch aus einer Datenbank erstellt wird.
Pro Eintrag in der Tabelle erhalte ich eine Checkbox, zwei Entryfields und eine Selectionlist.
Die Checkboxen werden als Post-Array übertragen. Sie haben also das Attribut name im Stil von “checkbox[]”.
Es werden also alle Angehakten Checkboxen in einem Array übertragen.

Seltsamerweise kamen im Zielscript aber nicht alle an.

Woran lag das jetzt? Nun, mein Hoster verwendet, der lieben Sicherheit zuliebe den suhosin-Patch für PHP. Darin gibt es eine Einstellung in der PHP.ini, welche dafür zuständig ist, wie viele Variablen in Post und Request maximal gespeichert werden können.

Diese Einstellungen heißen wie folgt:

suhosin.post.max_vars
suhosin.request.max_vars

und müssen unter der Sektion

[suhosin]

definiert werden, wenn man sie vom Standard (200) abweichen lassen möchte.

Glücklicherweise darf ich für jede Domain und jede Subdomain eine php.ini verwenden, so ich dies möchte.
Dementsprechend habe ich das angepasst und kann jetzt mehr Variablen verwenden, wodurch mein Formular wieder funktioniert.

Das hat es auch zuerst ;-)

Dann hab ich die Seite von einer Subdomain auf die Hauptdomain umgestellt… und dann ging garnichts mehr mit post…
Da war ich erstmal total baff…

Aber der Grund war diesmal klarer:
Der Admin-Bereich hat eine seperate Config-Datei und war noch auf die Subdomain eingestellt.
Das hätte auch funktioniert, wenn die htaccess-Datei mich nicht grundsätzlich auf die www-Version weitergeleitet hätte.
Auf diesem Weg sind die Post-Variablen dann also beim zweiten Mal verloren gegangen…

Was lernen wir also daraus?
Wenn Daten verloren gehen schaue ich in Zukunft als erstes nach, ob ich auch auf der URL lande, die im Formular angegeben war und danach schaue ich, ob ein PHP-Patch installiert ist, der ggf. eine besondere Konfiguration benötigt ;-)

Achja: Frohes Neues!

Dieser Artikel basiert auf meiner persönlichen Meinung. Nie mehr einen Artikel verpassen: RSS-Feed abonieren

3 Reaktionen zu “PHP Post-Variable verschwindet”

  1. Mario H.

    Ist mir auch schon häufiger passiert. Nach solchen Kleinigkeiten kann man stundenlang suchen. Also immer als erstes ein var_dump über die Post machen… und sich dann wundern, dass nicht mal ein NULL eingezeigt wird ;-)
    Aber 200 Post-Vars sind doch ‘ne ganze Menge - hast du mehrseitige Formulare oder wie kriegst du die hin?

  2. Xel

    Och - das ist ganz einfach:
    Ich hab da wie gesagt jeweils pro Eintrag (Größe XL z.B.) 3 Felder, die immer übertragen werden und eine Checkbox, die nur übertragen wird, wenn sie “checked” ist.

    Da ich die Motivauswahl auch darüber gestalltet habe (was soll fürn Motiv aufs Shirt) habe ich Einträge für

    Größe (S,M,L,XL,XXL)
    Shirt-Farbe
    Motivauswahl
    für Aufkleber noch Aufkleberfarbe
    Aufklebergröße

    also schon einige Einträge, jedenfalls über 50. Und bei 50×3=150 (die immer übertragenen Werte) + 50 “checks” liegt das Maximum, wenn ich nur 20 Variablen übertragen darf - mal davon abgesehen, dass noch ein paar Hidden-Fields vorhanden sind…

    Will ich jetzt einem Aufkleber mehr als 6 Motive zuordnen, (er hat bereits x Größen und y Farben) hab ich ganz schnell mehr als 200 POST-Variablen…

    Der Shop ist halt so gebaut und ich hab aktuell nicht die Zeit das völlig umzubauen, nur weil die Config nicht mehr Variablen zulässt ;-) einfacher zu bedienen währe es anders natürlich auch…

  3. Mario H.

    Danke für die Erläuterung.
    Wenn’s so klappt… umbauen kann man immer noch, wenn die Zeit und Muße da ist. Das ist doch immer mit sehr viel Arbeit verbunden - und never run a changed system ;-)

Einen Kommentar schreiben

 

Abonnieren ohne einen Kommentar abzugeben