Ich habe eine Anwendung als Test erstellt. Ich möchte die Session in der Datenbank vorhalten. Die Anwendung läuft Ajax basiert mit Unterstützung von PHP und mysql. Beim Aufruf der Website wird geprüft ob bereits eine Session besteht, wenn nicht, wird eine erstellt, ein token dazu und ein Link zusammengebaut, der diese Daten enthält (http://www.........?PHPSESSID=hgsgjk...gjkaslghaskljg). Dieser Link wird jetzt über Header() wieder aufgerufen. Soweit so gut. Jetzt findet die Prüfung eine Session und somit wird der else Teil wirksam, hier wird noch auf die Dauer geprüft und die Session gegebenenfalls abgebrochen und wieder neu gestartet. Auch wieder mit neuem token. Wieder wird ein Link erstellt und wieder über Header() neu aufgerufen. Nun läuft alles durch (Session da -> else -> Zeit ok -> weiter im Script). Soweit funktioniert das auch.
Nach dem Durchlauf beginnt dann die eigentliche Anwendung. Als erste werden Pfade in die DB geschrieben, die zu bestimmten Ordnern führen aber die SessionID im Namen haben. Diese Ordner werden dann auch gleichzeitig mit erstellt. So hat jede Session einen eigenen Temp Ordner. Nach dieser Aktion findet kein weiterer Aufruf einer HTML oder PHP Seite mehr statt, weder als Link, Form oder header(). Alles passiert jetzt nur noch per Ajax und nachladen von Inhalten.
Nach dem Durchlauf beginnt dann die eigentliche Anwendung. Als erste werden Pfade in die DB geschrieben, die zu bestimmten Ordnern führen aber die SessionID im Namen haben. Diese Ordner werden dann auch gleichzeitig mit erstellt. So hat jede Session einen eigenen Temp Ordner. Nach dieser Aktion findet kein weiterer Aufruf einer HTML oder PHP Seite mehr statt, weder als Link, Form oder header(). Alles passiert jetzt nur noch per Ajax und nachladen von Inhalten.
Bitte keine Diskussion über die Sinnhaftigkeit dieser Vorgehensweise, das ist ein Test für mich.
Es treten dabei ein paar Probleme auf. Laut jeder Doku sollte ein Aufruf über header() keine neue Session generieren. Aber es passiert trotzdem. Manchmal. Ich habe nun festgestellt, das ein fehlerhafter Pfad der CSS Datei für ein Hintergrundbild dazu führt, dass die Anwendung neu startet und sogar eine neue Session erstellt. In den Dokus kann ich zu diesem Fall nicht finden. Ist das etwas bekanntes?
Und noch etwas. Im Edge läuft mein Aufruf als Endlosschleife. Bei jedem Aufruf über header() macht der Browser eine neuen Session. Das Script wird also gar nicht bis zum Ende ausgeführt, ein die() nach der Sessionprüfung hat keine Wirkung. Trotzdem werden die Ordner erstellt und die Pfade in die DB geschrieben, obwohl das alles im Script erst nach dem die() kommt. Für mich eine vollkommen unerklärliche Vorgehensweise. Ist das erklärbar?
Es treten dabei ein paar Probleme auf. Laut jeder Doku sollte ein Aufruf über header() keine neue Session generieren. Aber es passiert trotzdem. Manchmal. Ich habe nun festgestellt, das ein fehlerhafter Pfad der CSS Datei für ein Hintergrundbild dazu führt, dass die Anwendung neu startet und sogar eine neue Session erstellt. In den Dokus kann ich zu diesem Fall nicht finden. Ist das etwas bekanntes?
Und noch etwas. Im Edge läuft mein Aufruf als Endlosschleife. Bei jedem Aufruf über header() macht der Browser eine neuen Session. Das Script wird also gar nicht bis zum Ende ausgeführt, ein die() nach der Sessionprüfung hat keine Wirkung. Trotzdem werden die Ordner erstellt und die Pfade in die DB geschrieben, obwohl das alles im Script erst nach dem die() kommt. Für mich eine vollkommen unerklärliche Vorgehensweise. Ist das erklärbar?
Kommentar