v jednom systéme (nie phpRS) to mám takto:
v konfigu je definovany cas v sekundach pre auto logout ako konstanta:
define('WEB_AUTO_LOGOUT', 900);
do kodu sablony vypisem JavaScript ak je user nalogovany
if (isset($GLOBALS['session_data'])) {
echo '
<script language="JavaScript" type="text/javascript">
var timeLimitCounter = '.WEB_AUTO_LOGOUT.';
var opacity_state = 1;
var blinking = false;
var logout_url = "'.WEB_ROOT.'?logout";
timerControlTimeLimit = setInterval("controlTimeLimit()",1000);
</script>
';
}
a nakoniec JavaScript:
/*
// funkcia pre upozornenie pred automatickym odhlasenim
*/
function controlTimeLimit() {
timeLimitCounter--;
if (timeLimitCounter < 1) {
window.location.href = logout_url;
}
if (timeLimitCounter < 300) {
if (blinking == false) {
blinking = setInterval("blinkElement('logout-timer',8,9)",600);
}
document.getElementById('logout-timer').style.display = 'inline';
document.getElementById('logout-timer').innerHTML = ('<img id="warning-icon" src="layout/icons/msg-alert.gif"> za <b>'+timeLimitCounter+'</b> sekúnd Vás systém automaticky odhlási <a href="javascript:void()" onclick="javascript:document.location.reload(true)">STOP</a>');
}
}
function setOpacity(element,value) {
element.style.opacity = value/10;
element.style.filter = 'alpha(opacity=' + value*10 + ')';
}
function blinkElement(elementName, op1, op2) {
if ((opacity_state % 2) == 0) {
setOpacity(document.getElementById(elementName),op1);
} else {
setOpacity(document.getElementById(elementName),op2);
}
opacity_state++;
}
if (timeLimitCounter < 300) {
ak pocitadlo dosiahne nizsiu hodnotu ako 300 sec, zacne blikat upozornenie, su v tom aj funkcie pre preblikavanie upozornenia cez CSS opacity. Myslim, ze jednoduchsie sa to spravit neda ;-)
Celkem upraveno 2×. Poslední úprava pa3k v 19.10.2007 10:38.