会话过期时显示警告消息

时间:2015-10-21 11:26:44

标签: php magento zend-framework magento-1.9

我希望在会话过期(15分钟)但不手动刷新页面时显示警告消息

我有这个:

$Mysession = Mage::getSingleton("core/session");
$Mysession->setData("s", "v");
$myDeviceId = $Mysession->getData("s");
$Mysession->setData("time", time());

//the condition   900= 15minutes
 if((time() - $Mysession->getData("time")) > 900){
 echo "Session expired";}

此处有效,但只有在我刷新页面时才显示该消息。

我想添加这个但不是一个好主意

$url1=$_SERVER['REQUEST_URI'];
header("Refresh: 5; URL=$url1");

1 个答案:

答案 0 :(得分:0)

听起来你想要实现的是客户端,而不是服务器端。

在页面加载时,您可以在javascript中设置计时器。当计时器到期时,显示您的消息。

setTimeout(function() {
    alert('Session expired');
}, 900); // 900 = 15 * 60

当然,您可能希望在超时前几分钟发出警告消息,以便让用户有机会刷新或做一些事情来继续他的会话;例如,您可以向服务器发出ajax请求以刷新其会话并重置计时器。并且您可以使用比alert()更优雅的内容来显示您的消息。到期时,您可能希望将用户直接重定向到新的登录页面,并显示已过期的消息。很多可能性。但是这个例子给出了核心思想。