params-Field in __users "Wegen seiner Länge ist dieses Feld vielleicht nicht editierbar"

  • Servus,


    Das Problem


    beim Speichern eines Userprofiles mit Community-Builder (CB) im Frontend ändert sich der Wert in der Tabelle __users von default:


    Code
    {"admin_style":"","admin_language":"","language":"","editor":"","helpsite":"","timezone":"Europe\/Vienna"}


    zu (2. Speichern):


    Code
    {"admin_style":"","admin_language":"","language":"","editor":"","helpsite":"","timezone":"Europe\/Vienna","0":"{\"admin_style\":\"\",\"admin_language\":\"\",\"language\":\"\",\"editor\":\"\",\"helpsite\":\"\",\"timezone\":\"Europe\\\/Vienna\"}"}


    zu (3. Speichern):


    Code
    {"admin_style":"","admin_language":"","language":"","editor":"","helpsite":"","timezone":"Europe\/Vienna","0":"{\"admin_style\":\"\",\"admin_language\":\"\",\"language\":\"\",\"editor\":\"\",\"helpsite\":\"\",\"timezone\":\"Europe\\\/Vienna\",\"0\":\"{\\\"admin_style\\\":\\\"\\\",\\\"admin_language\\\":\\\"\\\",\\\"language\\\":\\\"\\\",\\\"editor\\\":\\\"\\\",\\\"helpsite\\\":\\\"\\\",\\\"timezone\\\":\\\"Europe\\\\\\\/Vienna\\\"}\"}"}


    und so weiter. Nach dem 18. Speichern kommt eine weiße Seite > so fiel mir das Problem auf.


    Bisher getan


    Mit Error-Report kam der Hinweis auf zuwenig Speicher-Limit, nach Suchen kam ich auf die Tabelle mit den sich ändernden Werten. Neben dem params-Feld steht der Hinweis "Wegen seiner Länge ist dieses Feld vielleicht nicht editierbar".


    Zurücksetzen des Feldwerts auf Default (einkopieren von {"admin_style":"","admin_language":"","language":"","editor":"","helpsite":"","timezone":"Europe\/Vienna"} in phpMyAdmin)
    behebt das Problem.

    • Speichern des Profils im Backend ändert den Wert nicht (weder beim Speichern im Joomla-User noch im CB-User)
    • entsprechende Anfrage an CB brachte die Antwort "we don't handle params storage.. that's joomla.. just like username, etc.".
    • ändern aller Werte im params-Feld auf Default brachte keine Änderung
    • zurücksetzen der php-Version auf die vorher verwendete 5_6_13 brachte keine Änderung
    • ein neu aufgesetztes Joomla 3.5.1 hat dieses Verhalten nicht verändert.

    Weil die Site ursprünglich mit 2.5 erstellt wurde (und ich da kein reibungsloses Update zusammenbrachte), habe ich die installierte Joomla-Version mit einem neuen 3.5.1 überschreiben lassen der > keine Änderung.


    Frage


    wie kann ich noch herausfinden, wodurch die Änderungen im params-Feld entstehen?


    Danke fürs Lesen und helfen im Voraus
    Franz

  • Jedenfalls würde ich mal alle Plugins durchforsten, ob sich da evtl. eines versteckt, dass sich in die Userspeicherung einmischt. Auffällig sind die zunehmenden Backslashes. Dem params-Array wird fehlerhaft ein Index 0 hinzugefügt und das enthält als Wert einen länger werdenden JSON-String der jeweils auf dem vorigen aufbaut und wohl jedes mal vor dem Anhängen ein json_encode durchläuft.


    Vielleicht auch ein Formularfeld, das sich im Formular versteckt und da nicht hingehört. Müsstest du mal einen Test-User anlegen, mit dem Helfer sich das Formular mal HTML-seitig ansehen können.


    Bzw. mit dem Testuser mal CB-Erweiterungen kurz deaktivieren und schauen, ob auch die Joomla-Speicherung selben Effekt hat.


    Oder eine weitere Erweiterung, die ebenfalls mit Joomla-Usern arbeitet und sich ähnlich wie CB in die Speicherung "einmischen will". Bin nicht sicher: K2, Kunena oder so was?


    Ein Schnelltest mit CB, Joomla 3.5.1, XAMPP, PHP 5.6 war bei mir sauber.

    • Hilfreich

    Danke für deine Hilfe, @Re:Later. Ich habe sukzessive Plug-Ins wie k2, später alle nicht-Core-Plugins deaktiviert, ohne Änderung des Feld-Verhaltens.


    Die Ursache konnte ich finden:


    In einem CB-Feld kann man einstellen, welche Felder aus params angezigt werden (zb Backend-Sprache, Zeitzone ...). Hier hatte ich alle Felder auf "Verbergen" gestellt. Wenn ein Feld angezeigt wird (zb Anzeige der Frontend-Sprache) tritt der Fehler aus meinem ersten Post nicht auf.


    Nochmal Danke an alle, die hier mitgelesen haben.