Holger Lersch: Maximal n User sollen in einem Popup etwas sehen.

Hallo Gemeinde,

ich bräuchte mal ein paar Anregungen.

Auf einer Seite hat der user die Möglichkeit ein Popup zu öffnen. Ganz simpel mit javascript.

Wie kann ich jetzt im Popup mitzählen wieviele User dieses Ding gerade offen haben, um darauf zu reagieren und eben beim n+1. user etwas anderes auszugeben als bei den anderen?

Ich hantiere hier als serverseitige Sprache mit ASP.

Wenn's geht würde ich das ganze gerne ohne datenbank oder textdatei Geschreibsel lösen. Ich dach da eine geschickte verquickung von SessionID mit dem Application Objekt - ich hab jetzt schon mehrere Stunden rumgefriemelt, aber noch nix gescheites zu Stande gebracht.

Es ist bestimmt ganz trivial und ich seh einfach den Baum vor lauter Wald nicht ...

Für die eine oder andere Anregung, dieses Problem zu lösen wäre ich Euch sehr dankbar!

Ihr könnt hier ruhig auch in Perl oder PHP oder ... antworten. Irgendwie werde ich das schon deuten können ;)

Grüße
Holger

  1. Moin!

    Auf einer Seite hat der user die Möglichkeit ein Popup zu öffnen. Ganz simpel mit javascript.

    Wie kann ich jetzt im Popup mitzählen wieviele User dieses Ding gerade offen haben, um darauf zu reagieren und eben beim n+1. user etwas anderes auszugeben als bei den anderen?

    Du kannst natürlich serverseitig mitzählen, wie häufig die im Popup enthaltene Seite abgerufen wurde - beim Überschreiten einer Zahl kannst du dann umschalten.

    Diese Methode klappt aber natürlich nicht für die Fragestellung, _gleichzeitige_ Öffnungen der Datei festzustellen.

    Wenn's geht würde ich das ganze gerne ohne datenbank oder textdatei Geschreibsel lösen. Ich dach da eine geschickte verquickung von SessionID mit dem Application Objekt - ich hab jetzt schon mehrere Stunden rumgefriemelt, aber noch nix gescheites zu Stande gebracht.

    Es ist bestimmt ganz trivial und ich seh einfach den Baum vor lauter Wald nicht ...

    Nein, es ist mit HTTP unlösbar. Der Server liefert die Popup-Seite aus - und fertig ist. Ob der User das Popup sofort wieder schließt, oder tagelang offen  läßt, spielt für den Server keine Rolle.

    Du müßtest irgendeinen Mechanismus erfinden, der den User als "hat das Fenster offen" beim Server anmeldet, und beim Schließen als "hat Fenster geschlossen" wieder abmeldet. Und das ganze dann noch _sicher funktionierend_! Vor allem diese letzte Bedingung wird dein System zum Einsturz bringen, denn die Welt von heute ist voller Javascript-Filter, die dir genau den Teil rauslöschen, den du fürs Abmelden brauchst: onunload. Oder onload.

    HTTP ist ein verbindungsloses Protokoll - man ist nicht beim Betreten der Site "mit dem Server verbunden" und kappt diese Verbindung beim Verlassen wieder, sondern jede Seitenanforderung steht vollkommen für sich allein. Auch Sessions helfen dabei nicht weiter - sie erlauben lediglich, ein paar allgemeine, userspezifische Daten über die Seiten hinwegzuretten, aber für deine Anwendung sind sie auch nicht geeignet.

    - Sven Rautenberg

    1. Hallo Sven,

      neuer Tag neues Glück ...

      Nein, es ist mit HTTP unlösbar. Der Server liefert die Popup-Seite aus - und fertig ist. Ob der User das Popup sofort wieder schließt, oder tagelang offen  läßt, spielt für den Server keine Rolle.

      Genau das ist mein Problem, hochzählen kann ich, nur wieder abziehen ...

      [...] als "hat das Fenster offen" beim Server anmeldet, und beim Schließen als "hat Fenster geschlossen" wieder abmeldet. Und das ganze dann noch _sicher funktionierend_! Vor allem diese letzte Bedingung wird dein System zum Einsturz bringen, denn die Welt von heute ist voller Javascript-Filter, die dir genau den Teil rauslöschen, den du fürs Abmelden brauchst: onunload. Oder onload.

      Sicherheit ist irrelevant (für meinen konkreten Fall) ;-) Ausserdem, wenn der User JS ausgeschaltet hat, wird er das popauf gar nicht aufmachen können, also stört mich das nicht weiter.

      Ich hatte heute Nacht eine "Framesvision" ... ein kleines Blindframe was sich mittels Meta-Angabe alle 2 Minuten neu lädt und beim neuladen eben die von Dir angesprochene "Ich-bin-noch-da" Meldung an den Server macht, zusammen mit der SessionID. So sollte es dann zumindest, wenn auch wacklig, funktionieren.

      Dank schonmal an

      - Sven Rautenberg

      und viele gute Wochenstartgrüße von
      Holger