Page 1 of 1

Manche Webserver manipulieren den QUERY_STRING

Posted: Mon 10. Aug 2026, 09:47
by Gert
Hallo,

Seit seiner Geburt vor mehr als 25 Jahren hatte CMSimple ein Problem: Manche Seitennamen geraten in Konflikt mit CMSimple Funktionen und sind nicht verwendbar.

Es handelt sich dabei ausschliesslich um kleingeschriebene Seitennamen. Bei deutschsprachigen Seiten tritt das Problem sehr selten auf, da man in der deutschen Sprache einen Seitennamen eigentlich immer mit einem Grossbuchstaben beginnt. In den Anfangszeiten handelte es sich um downloads und images als Seitennamen, später weitete es sich aber immer weiter aus. Die Anzahl der problematischen Seitennamen wuchs immer weiter.

Wenn man nicht eingeloggt ist, gibt es keine Probleme. Die offenbaren sich erst dann, wenn man diese Seiten bearbeiten will.

Mit CMSimple 5.22 war dieses Problem behoben. Die Lösung war, dass im Backend die entsprechenden Funktionen nur dann ausgelöst wurden, wenn der QUERY_STRING (alles nach dem "?" in der Adresszeile des Browsers) mit einem "&" begann.

Ein Beitrag von Frederik brachte mich aber auf die Spur eines Problems, mit dem ich nie und nimmer gerechnet habe: Es gibt Webserver, die ein führendes "&" aus dem QUERY_STRING entfernen :o

Das ist eigentlich laut Google Recherche bei php nicht üblich, aber siehe da - manche halten sich nicht an Konventionen.

Wenn Ihr das mal nachvollziehen wollt in einer Testinstallation von CMSimple 5.22+, einfach eine Zeile in die index.php im CMSimple Root einfügen:

Code: Select all

<?php /* utf8-marker = äöü */
$pth['folder']['base'] = './';

// neue Zeile
if(substr($_SERVER['QUERY_STRING'],0,1) == '&') $_SERVER['QUERY_STRING'] = substr($_SERVER['QUERY_STRING'],1);

include('./cmsimple/cms.php');
?>
Jetzt verhält sich CMSimple genau so wie im Thread von Frederic beschrieben. Viele Backendfunktionen funktionieren nicht mehr, Ihr könnt Euch nicht mal mehr ausloggen.

Ein führendes "&" taugt also nicht als Unterscheidungsmerkmal zwischen Seite und Funktion, also habe ich in CMSimple 5.24 eine Zeichenkette davorgesetzt, die vermutlich niemand und in keiner Sprache als Seitennamen verwenden wird. So ein URL sieht dann z. B. so aus: .../?k2chj47mrx3p&settings - im Backend ist sowas ja akzeptabel.

Bei meinen Tests ist mir aufgefallen, dass der Togglebutton Bearbeiten/Vorschau auch dann aktiv ist, wenn gar keine editierbare Seite aufgerufen ist. Ein Klick darauf führt dann in der Regel zur Startseite. Komisch, dass das bisher noch niemanden gestört hat. Jetzt wird der Togglebutton Bearbeiten/Vorschau durch einen Link zur Startseite ersetzt, wenn keine editierbare Seite aufgerufen ist.

Die Tests sind im Prinzip abgeschlossen, und ich werde CMSimple 5.24 in den nächsten Tagen veröffentlichen. Bs dahin könnt Ihr Euch ja mal den Spass mit der neuen Zeile in der index.php gönnen ;)

Gert

Re: Manche Webserver manipulieren den QUERY_STRING

Posted: Mon 10. Aug 2026, 10:11
by rreinhardklein
Hallo Gert
Wir User können Deine seit Jahren ungebrochenen Bemühungen cmSimple an alles was an Änderungen daherkommt anzupassen, nur dankend bewundern. Bitte weiter so!
Herzliche Grüße aus Wien
Reinhard

Re: Manche Webserver manipulieren den QUERY_STRING

Posted: Mon 10. Aug 2026, 11:29
by Gert
Hallo Reinhard,

vielen Dank - das tut gut ;)

Ich hatte ja schon öfters mal die Illusion, dass es nun mal für ein Jahr gut ist, das letzte mal bei CMSimple 5.23 :mrgreen:

Dann kam Frederik, und ich wollte es nicht glauben, dass die Installation in Ordnung ist. Dann hat mir Frederik Zugang zu seinem Server gegeben, und siehe da - meine Installationen zeigten die gleichen Symptome. Und ich hatte keine Ahnung, woran das lag. Es hat gedauert, bis ich darauf gekommen bin, dass da was mit dem QUERY_STRING nicht stimmt.

Mit den Providern braucht man in der Regel nicht zu diskutieren - die haben immer Recht und machen immer alles richtig. Man kann immer nur reagieren und selbst versuchen, seine Software für alle möglichen Serverkonfigurationen fit zu machen.

Jetzt hoffe ich wieder mal, dass dann mit CMSimple 5.24 zumindest für dieses Jahr Ruhe ist :roll:

Gert

Re: Manche Webserver manipulieren den QUERY_STRING

Posted: Mon 10. Aug 2026, 16:23
by Gonzo Gates
Hallo Gert,

ich habe die Zeile in V5.22RC2 eingefügt und es war interessant.

Wenn man im Bearbeiten-Modus einer Seite ist, passiert mal so gar nix. In der Vorschau auf Logout klicken bringt auch nix. Wenn ich im Backend auf Seiten (?&pagemanager&edit), Einstellungen (?&settings) oder Plugins (?&cmsimple_pluginmanager&normal) klicke passieren wundersame Dinge. Mal wird die Homepage im Bearbeiten-Modus angezeigt; Mal bekommt man eine 404-Seite mit Inhaltsverzeichnis. Klasse Das einzige, was funktioniert ist ein Klick auf Dateien.

Mir ist der Fehler mit dem Toggle-Button nie aufgefallen, denn, wenn ich angemeldet bin, ich mich nur auf 'Seiten' im Backend konzentriere, weil ich eine neue Seite anlegen möchte und die dann bearbeiten. Na ja, oder wenn ich Seiten in der Hierarchie verschieben möchte. Das weitere Bearbeiten von Seiten passiert i.d.R. in meinem Backend => Notepad++.

In der Firma hatten wir mal ein Problem damit, das beim Kunden intern und extern per E-Mail verschickte pdf-Dateien nur noch weiß aufgerufen wurden. Nach einer Untersuchung der Dateien kam heraus, das in den Dateien nicht mehr <subject> und <object> stand, sondern <subjec!> und <objec!>. Schuld daran war eine ausgetauschte Firewall. Das herauszufinden hat Stunden gedauert. Als Workaround hatte ein Kollege ein Programm gebaut, das die betroffenen Anwender pro Datei ausführen müssen, um bei diesen fehlerhaften Dateien alles wieder gerade zu bügeln. Das fiel mir zu diesem geklauten & ein, denn es könnte auch eine Firewall daran schuld sein.

Ach ja, dem von Reinhard geschriebenen kann ich mich anschließen, obwohl ich immer noch auf meiner V5.11 herum hänge :D

Gruß
Gonzo

Re: Manche Webserver manipulieren den QUERY_STRING

Posted: Mon 10. Aug 2026, 17:15
by Gert
Gonzo Gates wrote: Mon 10. Aug 2026, 16:23 Das fiel mir zu diesem geklauten & ein, denn es könnte auch eine Firewall daran schuld sein.
In diesem Fall wohl nicht.

Das "&" trennt ja die Parameter im QUERY_STRING, und ein führendes "&" im QUERY_STRING bedeutet einen leeren 1. Parameter. Das stört zwar niemanden, aber korrekt ist das sicher nicht. Also muss man wohl immer mal damit rechnen, dass Hardcore-Programmierer dagegen etwas unternehmen. In anderen Programmiersprachen ist das wohl so üblich, in php aber bisher laut Google KI nicht.

Wie auch immer, am Ende ist das mit den "problematischen Seitennamen" in CMSimple 5.24 dann sauberer programmiert als in den Vorgängerversionen, dank Frederik und seinem "crazy Server" ;)

Gert