WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 18.10.2019 08:35:11

florian
Administrator

class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

In der class.admin.php wird in Zeile 51ff der Parameter ?lang=XY offenbar als GET-Parameter an die aufgerufene URL angehängt, wenn Benutzer-Backendsprache != Seitensprache.
Wurden jedoch vom aufrufenden Modul die Page-ID und Section-ID vorher als POST-Parameter übertragen, fehlen diese bzw. gehen verloren. Dadurch schlägt dann die Prüfung in der /modules/admin.php, Zeile 25ff. fehl. Das ganze scheint aber irgendwie auch mit dem Frontend zusammenzuhängen.

Konkret führt das zu dem hier geschilderten Problem mit der RFG.
Ebenso treten dadurch unter bestimmten Umständen Fehler mit Tiny Newsletter auf.
Bei anderen Modulen mit Frontend-Edit (Itemz, Wunderblock) tritt das Problem nicht auf, allerdings werden dann die Eingabefelder in der Seitensprache anstatt der Backend-Benutzersprache beschriftet.

Ich habe leider keine Idee, was man da machen kann.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#2 18.10.2019 08:44:31

colinax
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

florian schrieb:

Eingabefelder in der Seitensprache anstatt der Backend-Benutzersprache beschriftet.

Dieses Verhalten wäre für mich kein Fehler sondern korrekt.

florian schrieb:

Ich habe leider keine Idee, was man da machen kann.

Was passiert wenn du in der class.admin.php die Zeilen 51 bis 64 entfernst?

Das war quatsch, da es im falschen Bereich greift.

Beitrag geändert von colinax (18.10.2019 12:09:58)

Offline

#3 18.10.2019 08:53:20

webbird
Administrator

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Statt gezielt aus $_GET oder $_POST aus $_REQUEST holen.

Quatsch. Nicht richtig nachgedacht.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#4 18.10.2019 08:56:21

webbird
Administrator

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Ohne jetzt in offenen Wunden wühlen zu wollen, das wäre wieder ein Fall für einen Cookie im Frontend. Über die Session kann man sich die gewählte Seitensprache merken und braucht keine Parameter, weder als Teil der URL nocht als Teil eines Formulars.


Ich habe eine Amazon-Wishlist. wink Oder spende an das Projekt.
Ich kann, wenn ich will, aber wer will, dass ich muss, kann mich mal

Offline

#5 18.10.2019 09:50:06

florian
Administrator

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Was passiert wenn du in der class.admin.php die Zeilen 51 bis 64 entfernst?

Dann wird bis zur Abmeldung die Benutzer-Backendsprache auf die Seitensprache umgestellt, sobald gespeichert wird.
D.h. obwohl bei "Meine Daten" und "Grundeinstellungen > Standardeinstellungen > Sprache" deutsch hinterlegt ist, erscheint dann im BE alles auf z.B. Englisch, wenn bei der betr. Seite dies als Sprache eingestellt ist. Diese Einstellung wird bis zur Abmeldung beibehalten, also das Speichern einer deutschsprachigen Seite führt nicht dazu, dass die BE-Sprache wieder auf deutsch umswitcht.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#6 18.10.2019 14:55:06

colinax
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

OK Sorry, das war (vermutlich) die falsche Stelle (in der class.frontend.php) gibt es den selben Code auch:

Ersetze mal in der class.frontend.php die Zeile 152:

$sUri = $this->page_link($this->page['link']).'?lang=' . $this->page['language'];

durch folgendes:

$_SESSION['LANGUAGE'] = $this->page['language'];
$sUri = $this->page_link($this->page['link']);

Dass sorgt dass im FE die  ?lang=XY nicht mehr angezeigt werden.

Dann ersetzte die angehängte admin.php.

Danach teste das RFG Problem

Wenn man das Verhalten der angehängten admin.php deuten kann gibt es irgendwo einen Fehler, der nicht angezeigt wird, beim klicken auf zurück wird redirected aber auf die default Sprache.

Edit: Anhang entfernt

Beitrag geändert von colinax (18.10.2019 16:22:30)

Offline

#7 18.10.2019 15:14:20

florian
Administrator

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

steigt aus mit
Notice: Undefined variable: oLang in /.../modules/admin.php on line 72
Notice: Trying to get property 'MESSAGE_GENERIC_SECURITY_ACCESS' of non-object in /.../modules/admin.php on line 72

wenn ich das richtig interpretiere, ist $page_id leer bzw. nicht-numerisch; beim Speichern/Aufrufen der save_settings.php wird laut Firefox-Konsole, Netzwerkanalyse auch immer noch der lang-String angefügt. (Passiert bei beiden modulen RFG und TNL)

Beitrag geändert von florian (18.10.2019 15:16:05)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#8 18.10.2019 15:21:28

colinax
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Numerisch ist die Page ID sonst würde er Zeile 70 nehmen, Zeile 72 sagt ja höher 0
Die Page ID ist numerisch aber nicht höher als 0

Das Problem liegt im core, vermutlich auch eines beim redirect, den alles auf deutsch funktioniert ja

Edit: sorry hatte andere Version im Kopf

Beitrag geändert von colinax (18.10.2019 16:18:42)

Offline

#9 18.10.2019 15:51:15

florian
Administrator

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

ich komme nochmal auf die class.admin.php zurück. Da wird ja der get-Parameter erzeugt, der die Post-Parameter schreddert. Wenn ich da brachial vor

$sHeaderLocation = $_SERVER['SCRIPT_NAME'] . '?lang=' . $user_language . $page_id_url . $section_id_url;

noch

$page_id_url .= (isset($_POST['page_id'])) ? '&page_id=' . (int) $_POST['page_id'] : '';
$section_id_url .= (isset($_POST['section_id'])) ? '&section_id=' . (int) $_POST['section_id'] : '';

rein dübele, kommt man schon etwas weiter. Die RFG-save_settings.php steigt dann immer noch aus, weil sie noch eine Hand voll weiterer Parameter erwartet, und diese gerne per post und nicht get hätte, aber zumindest TNL läuft dann durch.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#10 18.10.2019 16:21:51

colinax
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

florian schrieb:

steigt aus mit
Notice: Undefined variable: oLang in /.../modules/admin.php on line 72

Sorry hatte eine andere Version der Datei im Kopf.
Zeile 72 sagt defacto aus dass die Page ID numerisch ist aber nicht höher als 0

$sHeaderLocation = $_SERVER['SCRIPT_NAME'] . '?lang=' . $user_language . $page_id_url . $section_id_url;

Wenn ich bei der Zeile rund herum was ändere steigt mein Browser mit der Meldung "zu viele Redirects" aus.

Beitrag geändert von colinax (18.10.2019 16:24:53)

Offline

#11 19.10.2019 06:46:59

florian
Administrator

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Ich habs rausgefunden. Es betrifft Module, die ihrerseits ein Verzeichnis admin haben, also modules/tiny_newsletter/admin bzw. modules/responsiveFG/admin, auf Websites, bei denen das admin-Verzeichnis nicht umbenannt wurde.

Dadurch ergibt dann nämlich diese Abfrage in der class.admin.php
if ((LANGUAGE != $user_language) && file_exists(WB_PATH . '/languages/' . $user_language . '.php')
                && strpos($_SERVER['SCRIPT_NAME'], $admin_folder . '/') !== false) {
true, was bei allen anderen Modulen nicht der Fall ist und wodurch bei diesen folglich auch nicht der Fehler auftritt.

Der einfachste Workaround in diesem Falle: Das WBCE-Admin-Verzeichnis umbenennen, config.php anpassen. Bäm, Problem gelöst.

Beitrag geändert von florian (19.10.2019 07:07:01)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

stefanek

#12 19.10.2019 09:18:41

stefanek
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Wollte das mal testen und einen besseren Weg finden als das admin VZ umzubenennen, aber ich komme nicht dahin, den Fehler zu reproduzieren.

Habe die rFG installiert, eine Seite damit angelegt. Die Seitensprache ist EN, meine persönliche Einstellung ist DE.
Ich gehe auf die [Optionen/Tools] und nehme Änderungen vor, speichere. Meine BE Sprache bleibt Deutsch.

Anderes Szenario?

Gruß,
Christian


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#13 19.10.2019 09:22:11

florian
Administrator

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

In der  Frontend-Ansicht der RFG auf "setup assistant" klicken, irgendwas ändern und dann auf "apply".
https://forum.wbce.org/attachment.php?item=1934
Das wird in der Konstellation dann nicht übernommen und man landet kommentarlos auf der Frontend-Startseite der Website.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#14 19.10.2019 09:34:32

stefanek
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Danke Florian.
Ich denke ich kriege es gleich auch anders hin, auf Code-Ebene der class.admin.php

Der Code, den Du geposted hast:

if ((LANGUAGE != $user_language) && file_exists(WB_PATH . '/languages/' . $user_language . '.php')
                && strpos($_SERVER['SCRIPT_NAME'], $admin_folder . '/') !== false) {

wie Du schon richtig festgestellt hast, nimmt an, dass die Anfrage TRUE ist, weil im $_SERVER['SCRIPT_NAME'] der 'admin/' String vorkommt.

Ich denke, das beste was man machen kann, ist, dem zu untersuchenden String die WB_URL voranzustellen.

Also etwa so:

 && strpos($_SERVER['SCRIPT_NAME'], WB_URL.'/'.$admin_folder . '/') !== false){

Gruß,
Christian


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#15 19.10.2019 09:36:36

stefanek
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Ja, es geht genau so, aber bitte check, ob es nicht wo anders ein Loch aufreißt  lol


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

Liked by:

florian

#16 19.10.2019 09:53:34

florian
Administrator

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Scheint zu funktionieren.
Der Nachteil an dieser Änderung (oder auch dem quick & dirty-workaround mit dem Umbenennen des Admin-Verzeichnisses) ist, dass dann die Backend-Sprache unerwünschterweise für die Dauer der Sitzung auf die Seitensprache gestellt wird. Ist das bei Dir auch so?


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#17 19.10.2019 10:02:31

stefanek
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Es dürfte nicht damit zusammenhängen.
Denn ich habe nur den String erweitert gegen den geprüft wird.

Christian

Beitrag geändert von stefanek (19.10.2019 10:11:58)


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#18 19.10.2019 10:11:39

stefanek
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Mach Folgendes:

Log dich aus und wieder ein.
Geh im Backend zur Foldergallery->Tools&Settings, gehe zu Frontend Edit und komme mit dem "Pfeil zurück" des Browsers zurück ins Backend.
Das Modul tut es.

Gruß,
Christian


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#19 19.10.2019 10:13:21

stefanek
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Ich würde diesen Bug bei Chio ansprechen als Known-Bug. Ob er was tut oder nicht, gut, wenn es dokumentiert/kommuniziert ist


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#20 19.10.2019 10:18:12

florian
Administrator

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Nein, es hängt nicht direkt mit der Erweiterung des Prüfstrings zusammen und auch nicht direkt mit dem Modul.  Was ich meinte, ist: wenn der Get/post-Fehler durch die obige Anpassung umgangen wird, stellt sich die Backend-Sprache um. Das passiert auch bei anderen Modulen, z.B. wenn  bei Topics die Frontend-Edit-Funktion genutzt wird und die Seitensprache abweichend von der Benutzersprache ist.
Aber ja, ich würde das jetzt auch eher als "Known Bug" ansehen, mit dem man dann auch erstmal leben kann/muss. Es kommt ja nur unter sehr speziellen Voraussetzungen vor.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#21 19.10.2019 10:25:33

stefanek
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Tritt nur mit Chios Modulen auf?

Wenn nicht, schaue ich es mir gerne nochmal an.

Meiner Meinung nach ist das Problem für Chio immer schon gewesen, dass er beklagt hat, dass der Core wenig Möglichkeiten für FE-Edit bietet.
Irgendwie hat er auch recht. Und irgendwie hat er es auch gelöst, auch wenn es nicht ganz rund läuft.

Aber ich denke, es wäre das beste, wenn Chio schauen könnte, wie das auf Modul-Ebene behoben werden kann.

Beitrag geändert von stefanek (19.10.2019 10:59:53)


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#22 19.10.2019 10:38:11

stefanek
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Ich denke, der erste Fehler der in dem Modul auftaucht, ist, dass wenn ich vom Backend auf die Seite in den FE-Edit Mode gehe, nicht die Backend-Sprache des Users genommen wird, sondern die Sprache der Seite.
Ob gewollt oder nicht drauf geachtet, nicht berücksichtigt etc. keine Ahnung.

Beitrag geändert von stefanek (19.10.2019 10:58:40)


“Success is the progressive realization of a worthy ideal.” ― Earl Nightingale

Offline

#23 19.10.2019 13:32:46

bernd
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

florian schrieb:

Ich habs rausgefunden. Es betrifft Module, die ihrerseits ein Verzeichnis admin haben, also modules/tiny_newsletter/admin bzw. modules/responsiveFG/admin, auf Websites, bei denen das admin-Verzeichnis nicht umbenannt wurde.

*grmpf* womit sich schlagartig erklärt warum ich das beim TNL auf meiner lokalen Spielwiese nicht reproduzieren konnte ... roll


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

#24 20.10.2019 00:30:09

colinax
Developer

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

Gibt’s irgendwelche Einwände meine Änderungen von #6 in den Core aufzunehmen?

Der Fix würde auch das SEO auf MultiLang Seiten stark verbessern.

Offline

#25 20.10.2019 08:16:57

florian
Administrator

Re: class.admin.php: exotisches GET/POST-Problem durch lang-Parameter

ja, kann rein


Code allein macht nicht glücklich. Jetzt spenden!

Offline

Liked by:

colinax

Fußzeile des Forums

up