JavaScript Inhalte in einem DIV Refreshen, bei Session Abbruch aber redirect?

Blackbenji

Lieutenant
Registriert
Nov. 2009
Beiträge
557
Hallöchen,

ich habe ein kleines Login System für ein Dashboard. Bei erfolgreichem Login wird ein Timestamp in die Session Variable geschrieben.
Bei jedem Seitenaufruf wird der Wert mit den Vorgaben ("session timeout") überprüft. Sobald dieser überschritten ist, soll die Loginseite wieder angezeigt werden.

Auf diesem Dashboard gibt es ein DIV in dem ein automatisch sich aktualisierender Timestamp via JQuery ausgetauscht wird.

Code:
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script>
    function timeLeft() {
        $(".refresh-item").each(function () {
            var $this = $(this);
            var data = $this.attr("data-content");
            $.ajax({
                type: "GET",
                url: "@{{ common_webserver }}/service/get/update/" + data,
                dataType: "html",
                data: data,
                success: function (result) {
                    $this.html(result);
                }
            });
        });
    }
    window.onload = timeLeft;
    window.setInterval(function () {
        timeLeft()
    }, 10000);
</script>

Der PHP Code der Aufgerufen wird ist:
PHP:
        if (module\UserPanel::is_active() == true) {
            return "last reload: " . date('m.d.y H:i:s');
        } else {
            header('Location: '. WEBSERVER);
            exit();
        }

Problem ist nur: die Loginseite wird jetzt nur in dem DIV angezeigt und nicht in der gesamten Seite.

Frage:
gibt es eine Möglichkeit dem JQuery ein "failed" zurück zu liefern, so dass das JQuery ein redirect auf die Login Seite nutzen kann?
 
Mach doch einfach auf dem Webserver
Code:
if(Session abgelaufen){
echo "abgelaufen";
}
else{
echo timeleft;
}

Aber Optimizationstechnisch (gibt's das Wort :D) ist das ziemlich schlecht. Zum einen würde es sich anbieten den Status einmal beim Laden der Webseite abzufragen und dann mit einer Variable weiterzuarbeiten. Verhindert dann den unnötigen Traffic
 
Der angezeigte Timestamp ist nicht an die Session gebunden sondern gibt wieder, wann die Daten innerhalb des Dashboards das letzte mal geladen wurden. Da der Refresh sowohl den Timestamp als auch die angezeigten Daten im DIV neu lädt, brauche ich kein kompletten Side-Reload. Das würde einen Traffic Overhead erzeugen.
 
Zurück
Oben