You are not logged in.

Hawkes

Member

  • "Hawkes" is male
  • "Hawkes" started this thread

Posts: 5,962

Location: Konstanz

Occupation: Student (Physik)

  • Send private message

1

Friday, November 6th 2009, 6:28pm

Sessionupdate trotz disableUpdate()

Ich habe in einem Paket von mir das Problem, dass der periodische AJAX-Aufruf einer page class die WIO Anzeige verändert, was eigentlich durch ein disableUpdate verhindert werden sollte.

Die Page class besitzt folgenden abgeleiteten Konstruktor:

PHP Source code

1
2
3
4
5
6
7
8
       /**
         * @see AbstractPage::construct()
         */
        public function __construct() {
                WCF::getSession()->disableUpdate();

                parent::__construct();
        }


Fehler in meiner Vorgehensweise (an sich benutzt ihr bei der CronjobsExecAction ja dieselbe Vorgehensweise) oder Fehler im WCF Sessionsystem?
Kein Support von Plugins per PN, Mail oder IM! Alte Plugins, die ich nicht mehr im Plugin-Store anbiete, werden nicht mehr supportet. Bitte von Anfragen absehen.
Meine Plugins und Projekte

Marcel Werk

WoltLab Management

  • "Marcel Werk" is male

Posts: 14,803

Location: Berlin

  • Send private message

2

Monday, November 9th 2009, 7:38pm

Ich kann das so nicht reproduzieren. Verhält sich bei mir wie erwartet.
Marcel Werk
WoltLab Management

Follow me on Twitter

Hawkes

Member

  • "Hawkes" is male
  • "Hawkes" started this thread

Posts: 5,962

Location: Konstanz

Occupation: Student (Physik)

  • Send private message

3

Monday, November 9th 2009, 9:10pm

Im Normalfall sollte aber eine eben so gestaltete Seite, die per AJAX aufgerufen wird, in keinem Falle in der Session Tabelle bei requestURI auftauchen. Unverständlicherweise tut das diese Seite aber.
Kein Support von Plugins per PN, Mail oder IM! Alte Plugins, die ich nicht mehr im Plugin-Store anbiete, werden nicht mehr supportet. Bitte von Anfragen absehen.
Meine Plugins und Projekte

Marcel Werk

WoltLab Management

  • "Marcel Werk" is male

Posts: 14,803

Location: Berlin

  • Send private message

4

Monday, November 9th 2009, 9:17pm

Ich kann mir nur vorstellen, dass der jeweilige Nutzer vorher gar keine aktive Session hatte bzw. diese nicht richtig an den AJAX-Aufruf übergeben wurden. Dann wird natürlich eine komplett neue Session erstellt - unabhängig von WCF::getSession()->disableUpdate();
Marcel Werk
WoltLab Management

Follow me on Twitter

Hawkes

Member

  • "Hawkes" is male
  • "Hawkes" started this thread

Posts: 5,962

Location: Konstanz

Occupation: Student (Physik)

  • Send private message

5

Monday, November 9th 2009, 9:47pm

Die fraglichen requestURIs enthalten keine SessionID in der Sessiontabelle. Ich hab mich testweise deaktivierten Cookies eingeloggt, konnte es aber nicht reproduzieren. Ich habe ja selber das Problem diesen Fehler gezielt zu reproduzieren, aber er tritt auf und das sieht man durch die Sessiontabelle bzw. das WIO. Ich bin aber ratlos wodurch das kommt. Selbst wenn ein Gast oder ein Nutzer ohne SID die Seite aufruft sollte ja durch den Constructor das Sessionupdate disabled werden, bevor Berechtigungsabfragen etc. greifen.
Kein Support von Plugins per PN, Mail oder IM! Alte Plugins, die ich nicht mehr im Plugin-Store anbiete, werden nicht mehr supportet. Bitte von Anfragen absehen.
Meine Plugins und Projekte

Marcel Werk

WoltLab Management

  • "Marcel Werk" is male

Posts: 14,803

Location: Berlin

  • Send private message

6

Monday, November 9th 2009, 9:53pm

Wenn eine Person ohne Session den Link aufruft wird in jedem Fall eine neue Session erstellt - und dabei wird die aktuelle requestURI abgespeichert. Das lässt sich auch nicht mit WCF::getSession()->disableUpdate() verhindern. Letzteres verhindert nur das Update einer bereits existierenden Session.
Marcel Werk
WoltLab Management

Follow me on Twitter

Hawkes

Member

  • "Hawkes" is male
  • "Hawkes" started this thread

Posts: 5,962

Location: Konstanz

Occupation: Student (Physik)

  • Send private message

7

Monday, November 9th 2009, 10:07pm

Ich glaub ich hab eine Erklärung: Diese Seite wird periodisch per AJAX aufgerufen, jedoch nie die Session aktualisiert, damit eben nicht die requestURI verändert wird. Nun kann es aber dadurch sein, dass die Session trotzdem ganz normal abläuft, weil der Benutzer die Seite nur noch in einem Tab laufen hat und andere Dinge macht. Im Hintergrund laufen aber immer noch AJAX Requests ab, die dann nach Ablauf der Session die requestURI entsprechend setzen, da eine neue Session erstellt wird. Daher ist für die anderen Benutzer im WIO dann eben diese Seite sichtbar und ändert sicht erst wieder, wenn der Benutzer dann in diesem Tab die Seite gezielt aufruft.

Okay, dann ist das an sich kein Fehler, dennoch wäre es für die Zukunft eventuell wünschenswert bestimmte Seiten von der WIO Liste komplett ausschließen zu können (siehe Dateianhangsproblematik).
Kein Support von Plugins per PN, Mail oder IM! Alte Plugins, die ich nicht mehr im Plugin-Store anbiete, werden nicht mehr supportet. Bitte von Anfragen absehen.
Meine Plugins und Projekte

  • "black_kite" is male

Posts: 3,015

Location: braunschweig

Occupation: alles möglich

  • Send private message

8

Tuesday, November 10th 2009, 7:00am

bin auch schon auf ner suche nach die Möglichkeit gewisse page.class aus der WIO zu verbannen da nicht jeder update (ajaxupdate oder img-script) dort auftauchen sollte.

EDIT.:
könnte man nicht Thoretisch ein SQL befehlt ausfürhen lasen (Detete by requst uri)
alle Beiträge zwischen 20.00 und 23.59 Uhr, können Ignoriert werden

This post has been edited 1 times, last edit by "black_kite" (Nov 10th 2009, 6:29pm)