Peter: Bei deaktiviertem Javascript von der Seite werfen

Hallihallo,

ich habe eine Seite in die wenn man sich einloggt, die Navigation ausschließlich per Ajax stattfinden soll. Es soll nur für einen eingeschränkten Besucherkreis gelten und daher ist es egal wenn mal einer nicht drauf kann bei deaktiviertem Javascript - Dann muss er es halt einschalten.

Ansatz:
Zwischen zwei no script tags ein Metarefresh das zu einem php-script verweist, dass die Sessions killt.

Problem:
Meta Refresh kann deaktiviert werden.

Denkansatz 2:
zwischen die zwei noscript tags ein header("Location blubb")

Probleme:
<noscript> wurde schon an den client gesendet und zweitens ist das serverseitig, den interessiert also nicht das da noscript steht sondern führt es dann aus.

Wie krieg ich den Nutzer möglichst schnell von der Seite runter?

Danke für eine Antwort! :)
Peter

  1. Warum soll er runter? Wenn er nicht weiter navigieren kann hat es sich doch schon von selbst erledigt.
    Ohne irgendwas ausführbares bekommst du die Seite nicht weg.

    Du könntest dafür sorgen dass er sich gar nicht erst einloggen kann, z.B. auf der Login Seite die Eingabefelder mit JS einfügen oder den Submit per JS ausführen oder so.

    1. Du könntest dafür sorgen dass er sich gar nicht erst einloggen kann, z.B. auf der Login Seite die Eingabefelder mit JS einfügen oder den Submit per JS ausführen oder so.

      Naja, der Nutzer könnte ja innerhalb des Loginbereichs das Javascript deaktivieren und darum geht es. Und ich möchte nicht, dass er ohne Logout die Seite schließt.

      1. Tach!

        Du könntest dafür sorgen dass er sich gar nicht erst einloggen kann, z.B. auf der Login Seite die Eingabefelder mit JS einfügen oder den Submit per JS ausführen oder so.
        Naja, der Nutzer könnte ja innerhalb des Loginbereichs das Javascript deaktivieren und darum geht es. Und ich möchte nicht, dass er ohne Logout die Seite schließt.

        Versuche nicht, die Kontrole über den Browser des Benutzers zu erlangen. Verhindere stattdessen auf dem Server, dass er sein Ziel nicht erreicht, wenn er die dazu notwendigen Voraussetzungen (lies: Berechtigungen) nicht erfüllt. Alles andere kann dir im Grunde egal sein. Selbst wenn du ihn mit Location-Headern wegzuschicken versuchst, kann er das ignorieren und trotzdem eventuelle unerwünschte Anfragen stellen.

        dedlfix.

      2. Hallo Peter,

        Naja, der Nutzer könnte ja innerhalb des Loginbereichs das Javascript deaktivieren und darum geht es. Und ich möchte nicht, dass er ohne Logout die Seite schließt.

        Das kannst du nicht verhindern, da es ja nun mal verschiedene Wege gibt den Browser zu schließen. Aber vielleicht gibts Lösungsvorschläge für dein eigentliches Problem, warum sollte der User die Seite nicht ohne Logout verlassen?

        ciao
        romy

      3. Hallo,

        [...] Und ich möchte nicht, dass er ohne Logout die Seite schließt.

        dagegen kannst du aber sowieso nichts tun - es gibt so viele Möglichkeiten, wie das auch ohne gezielte Absicht passieren kann:

        * Schließen des gesamten Browsers
         * Programmabsturz
         * Ausschalten des Rechners (nicht jedes System braucht eine dedizierte Shutdown-Prozedur)
         * Trennen der Netzwerkverbindung
         * Störung der Internet-Verbindung

        Wenn du "verwaiste" Logins oder Sessions vermeiden willst, solltest du lieber dafür sorgen, dass Sessions nach einer bestimmten Zeit ungültig werden, wenn sie innerhalb dieser Zeitspanne nicht aufgefrischt werden. Solange der Besucher auf einer bestimmten Seite verweilt, könntest du per Javascript (AJAX) z.B. einmal pro Minute einen Dummy-Request absetzen. Nebenwirkung: Der Nutzer bleibt eingeloggt, obwohl die Seite nur noch irgendwo in einem Background-Tab offen ist und gar nicht mehr beachtet wird (und ein zeitgesteuertes Logout doch schlauer wäre).

        So long,
         Martin

        --
        Ich stehe eigentlich gern früh auf.
        Außer morgens.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
      4. Naja, der Nutzer könnte ja innerhalb des Loginbereichs das Javascript deaktivieren und darum geht es. Und ich möchte nicht, dass er ohne Logout die Seite schließt.

        Eben war es noch das Menü...

        Das Du das nicht verhindern kannst hat Peter schon richtig geschrieben. Du kannst nur versuchen etwas ähnliches zu erreichen:

        Ich hoffe, Dein Login funktioniert mit einer Session. Gib dieser eine Gültigkeit mit einem für die Arbeit im Admin-Bereich hinnehmbaren Wert und erneuere diese Gültigkeitsdauer bei jeder Aktion. Macht der Benutzer nichts, dann ist er "abgemeldet".

        Möglicherweise macht es Sinn den Benutzer via JS vor dem Ablauf zu warnen und zu einer Verlängerung der Sitzung mittels eines "Klicks" - z.B. einen "Ajax"-Request auslöst, zu bewegen.

        Ansonsten frage ich mich, ob Du es nicht übertreibst. Warum sollte ein Benutzer nach dem Login in den Admin-Bereich Javascript deaktivieren - zumal dieser dann ja nicht korrekt funktioniert? Alle Lösungen werden eine gewisse Komfort-Einschränkung bedeuten.

        Fred

    2. Du könntest dafür sorgen dass er sich gar nicht erst einloggen kann, z.B. auf der Login Seite die Eingabefelder mit JS einfügen oder den Submit per JS ausführen oder so.

      Genau. Oder ein Wrapper, der die gesamte Seite einschließt, laut css ausgeblendet ist, onload mit js eingeblendet wird und ein <noscript>- Bereich mit der Warnung. Oder eine Warnung mit noscript, die mit css (position, z-index) über alle anderen Inhalte gesetzt ist. Das könnte und sollte, wie Peter richtig vorschlägt, schon auf der Login-Seite stattfinden.

      Super-Aufwand-Variante: Du setzt mit "Ajax" und einem Skript auf dem Server eine Variable in einer Session und reagierst dann darauf oder holst gar die Inhalte erst mit "Ajax" ab...

      Man kann da einen gigantischen Aufwand treiben. Die Frage ist, ist es das wert? Siehe Satz 2 von Encoder.

      fred

  2. hi,

    Wie krieg ich den Nutzer möglichst schnell von der Seite runter?

    Genauso, wie jemand abgewiesen wird, der bei jedem Request mit einer neuen oder mit keiner Session-ID ankommt. Nur mit dem Unterschied, dass die Session nicht wie üblich, über einen Cookie steht, sondern auf einer reinen JS Lösung. So habe ich das schonmal realisiert.

    Hotti