JS: Restliche Sessionlaufzeit anzeigen
Autor: Ralf v.d.Mark
eingetragen: Mittwoch, 24. April 2019 um 09:42 Uhr (17/2019 Kalenderwoche)
geändert: Freitag, 19. Juni 2020 um 14:53 Uhr (25/2020 Kalenderwoche)
Keywords: Sessionlaufzeit restliche ausloggen
Kategorien: JavaScript, PHP,
Text:
Das Skript zeigt die restlichen Minuten an und zählt ab der letzten Minute die Sekunden runter.
Bei 0 wird der Satz "Die Sessionzeit ist abgelaufen!" angezeigt. An dieser Stelle könnte man auch einen Redirect auf die Login-Seite machen ;-), aber Vorsicht bei Formularen. Der Nutzer könnte das nicht lustig finden, wenn er alle Daten erneut eingeben muss.
IDEE: Vielleicht könnte man das auch grafisch darstellen mit:
60 Sekunden
1.) Anleitung: selfhtml.org
2.) TechDox: ähnliches Thema #249
3.) TechDox: ähnliches Thema #229
Quellcode:
<?php
/** Nach dieser Zeit wird das Login-Form mit JS wieder ausgeblendet!
* @var integer */
define('ZEIT_UM_LOGIN_AUSZUFUELLN', 10);
?>
<h1>Beispiel für grafisch Darstellung:</h1>
<progress value="4" max="10">Restlicher Zeitraum: 4 Minuten</progress>
<br>
<div id="restlSessionZeitAnzgn">
<strong title="Zeit gilt ab <?= date('H:i'); ?> Uhr am <?= date('d.m.Y');
?>">Restliche Sessionzeit:
<span id="MinutenAnzeige" style="color: green; font-weight: normal;"
><?= ZEIT_UM_LOGIN_AUSZUFUELLN;
?> Minuten</span>.</strong>
</div><!-- ENDE: div class="row" -->
<script type="text/javascript">
var restlMinuten = <?= ZEIT_UM_LOGIN_AUSZUFUELLN ?>;//in Minuten
var restlSekunden = 60;//60 Sekunden (Countdown ab der letzten Minute)
var eineMinute = 60000;//60 x 1000 = 60000 (= 1 Minute)
var ladeZeitNeu;//wird unten gebraucht
function zeigeVersteckeLoginNachZeit(restlMinuten, restlSekunden) {
if (restlMinuten < 3) {
//Letzte Minute ist angebrochen, jetzt Sekunden zeigen...
if (restlSekunden < 1) {
//Zeit ist abgelaufen; Die Prozedur nicht erneut laden!
document.getElementById("restlSessionZeitAnzgn").innerHTML =
'<strong>Die Sessionzeit ist abgelaufen!</strong></a>';
} else {
//Hier laeuft die Zeit ab!
document.getElementById("MinutenAnzeige").style.color ="red";
document.getElementById("MinutenAnzeige").style.fontWeight ="bold";
document.getElementById("MinutenAnzeige").innerHTML =
"noch " + restlSekunden + " Sekunden";
//Restliche Sekunden um eine verringern
restlSekunden = restlSekunden - 1;
//jetzt einfach immer wieder aufrufen (1 x pro Minute)
ladeZeitNeu = window.setTimeout("zeigeVersteckeLoginNachZeit(\'"
+ restlMinuten + "\', \'" + restlSekunden + "\')", 1000);
}//ENDE: else ==> if (restlSekunden < 1)
} else if (restlMinuten < 1 || restlSekunden < 1) {
//Hier sollte man nicht mehr hin kommen, aber zur Sicherheit:
//Zeit ist abgelaufen; Die Prozedur nicht erneut laden!
document.getElementById("restlSessionZeitAnzgn").innerHTML =
'<strong>Ihre Sessionzeit ist leider abgelaufen!</strong></a>';
} else {
//Restliche Minuten um eine Minute verringern
restlMinuten = restlMinuten - 1;
//Hier laeuft die Zeit ab!
document.getElementById("MinutenAnzeige").innerHTML =
"noch " + restlMinuten + " Minuten";
//jetzt einfach immer wieder aufrufen (1 x pro Minute)
ladeZeitNeu = window.setTimeout("zeigeVersteckeLoginNachZeit(\'"
+ restlMinuten + "\', \'" + restlSekunden + "\')", eineMinute);
}//ENDE: else ==> if (restlMinuten < 3)
}//ENDE: function zeigeVersteckeLoginNachZeit()
//Nach einer Minute (60.000 Milisekunden) geht es los...
ladeZeitNeu = window.setTimeout("zeigeVersteckeLoginNachZeit("
+ restlMinuten + ", " + restlSekunden + ")", eineMinute);
</script>