Posts Tagged ‘XtCommerce’

Eingabefelder werden nicht mehr übernommen (bei uns Gambio, xtC mit 1und1)

2. Januar 2012

Eingabefelder in großen Listen werden plötzlich nicht mehr übernommen (bei uns Gambio, xtC  mit 1und1)

„Bisher tat doch das immer – und nun?“

Das ist häufig das Problem in der Web-Entwicklung.

Doch leider sind sehr viele Stufen an einem Ergebnis beteiligt.

Vom Surfer, über den Browser, die Weboberfläche, dessen Firewall, die Übertragungsstrecke, der Server, die Programmiersprache und deren Laufzeitumgebung, die Aplikation Webserver, die Webapplikation, die angelegten Speicherbereiche und deren Verarbeitung.

Fehlersuche ist dabei sehr aufwändig. Auch diesmal, aber wir haben den Fehler gefunden und sind an der Behebung.

Der Tipp um das Problem zu identifizieren kam aus dem Forum / Wiki von stackoverflow.com. Hierhin nochmals mein spezieller Dank.

Was passiert denn nun?

1. Teile der eingegebenen Textfelder (Text fields) gehen verloren und werden nicht mehr verarbeitet.

2. Der verlorene Teil befindet sich am Ende der Daten.

3. Es gibt eine Unmenge an Eingabefeldern in diesem Formular.

4. Bisher tat es. Jetzt plötzlich nicht mehr.

Die Daten werden also ab einem gewissen Punkt einfach abgeschnitten und weggeworfen.

Wo? PHP-Übernahme der Daten aus dem Datenstrom des Servers.

Der Fehler kann lokalisiert werden bei der Datenübernahme der eingehenden Daten vom Server an PHP.

PHP – POST-Methode bei Formularen geht neuerdings schief. Warum?

Es gibt Bestrebungen bei PHP 5.4  und auch bei Sicherheitspaketen zu PHP (Suhosin) die Anzahl der Eingabefelder auf 1000 zu begrenzen.

Anscheinend wird dieses Limit (Sicherheitfeature) bereits bei einigen Providern (1&1) bereits in PHP 5.2.x eingesetzt.

Daher laufen verschiedene Applikationen nicht mehr, wie zuvor.

Wie kann man prüfen?

Mit phpinfo.php sieht man, wann der letzte Build des PHP-Kerns durchgeführt wurde. Bei uns traf dieses Datum mit dem Auftreten der Fehler zusammen.

Ergänzung (3.1.2012):

Die Variable max_input_vars ist zuständig. Prüfen Sie, wie diese bei Ihnen gesetzt ist.

Ergänzung (6.1.2012):

Auch 1&1 lässt nun zu, dass die Variable mit phi.ini gesetzt wird.

Mit dem Zählen der Eingabefelder kommt man auch weiter. Kommt der Fehler wirklich bei etwa 1000 Feldern (einige Felder zu Beginn des Datenstroms sind nicht dargestellt, die zählen aber mit.).

Mit Tamper Data (Firefox Add on) kann man den Datenstrom ansehen und sieht, ob beim Formular alle Daten abgesendet werden.

Was machen?

Aktuell sieht es so aus, als ob man Einfluss auf die Server-Betreuer nehmen muss. Sie haben die Macht den PHP-Kern zu ändern.

Und ab PHP 5.4 müssen wohl auch viele Softwarepakete gepatched werden. Das kann lustig werden.

Haben Sie weitere Infos? Hier in den Kommentaren ist viel Platz.