58 lines
1.8 KiB
JavaScript
58 lines
1.8 KiB
JavaScript
//AJAX запросы для проверки сесии
|
||
|
||
function CheckSession(path)
|
||
{
|
||
this.processReqChange=function(req,url)
|
||
{
|
||
if(req.readyState === 4 || typeof(req.readyState) === 'undefined')
|
||
{
|
||
if(req.status === 200 || typeof(req.status) === 'undefined')
|
||
{
|
||
if(url.indexOf('fn=0')>=0)
|
||
{
|
||
this.ses_name=req.responseText;
|
||
this.sendReq('?fn=1');
|
||
}else
|
||
if(url.indexOf('fn=1')>=0)
|
||
{
|
||
this.ses_id=req.responseText;
|
||
this.run();
|
||
}else
|
||
if(url.indexOf('fn=2')>=0)
|
||
{
|
||
if(parseInt(req.responseText)<0)
|
||
{
|
||
clearTimeout(this.timer);
|
||
//alert('Ваша сессия завершилась!');
|
||
//location.reload();
|
||
alert2(trt("Alert"),'Ваша сессия завершилась! При нажатии на “OK” страница перезагрузится, а при нажатии на “X“ закроется сообщение.').onclick=function(){ location.reload(); };
|
||
}
|
||
}
|
||
}
|
||
}
|
||
};
|
||
//Отправить запрос на сервер
|
||
this.sendReq=function(prm)
|
||
{
|
||
var url=this.path+prm; //'http://'+document.domain+this.path+prm
|
||
|
||
var req = new window.XMLHttpRequest;
|
||
req.onreadystatechange=function(thiz,req,url){ return function(){ thiz.processReqChange(req,url) } }(this,req,url);
|
||
req.open("GET", url, true);
|
||
req.send(null);
|
||
};
|
||
//Запрос состояния сессии через заданный интервал
|
||
this.run=function()
|
||
{
|
||
this.sendReq('?fn=2&'+this.ses_name+'='+this.ses_id);
|
||
this.timer=setTimeout(function(thiz){ return function(){ thiz.run(); }}(this), 60000);
|
||
};
|
||
|
||
this.path=path; //URL файла session.php
|
||
this.ses_name=''; //Наименование сесии
|
||
this.ses_id=''; //Идентификатор сесии
|
||
this.timer=0; //Идентификатор таймера
|
||
|
||
this.sendReq('?fn=0');
|
||
}
|