如何在会话超时时显示弹出窗口

时间:2013-12-29 10:40:44

标签: javascript php ajax jquery session

我一直在网站上工作,遇到了一些困难。

基本上我想在用户闲置一段时间后显示一个弹出窗口;我不知道如何使用AJAX,这似乎是流行的解决方案。

我的网站主要是PHP和CSS。

这是我目前正在使用的,但它不如我想的那样有效,因为弹出窗口只会在屏幕刷新后显示。

if (isset($_SESSION['username']) && isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > 5)) {
    connect();
    if(!connect()) {
        die('Could not connect: ' . mysql_error());
        header( "refresh:3; url=/index.php" );
    }
    mysql_select_db('www');
    $user = $_SESSION['username'];
    mysql_query("UPDATE users SET online='0'
    WHERE username='$user'");

    echo '<script type="text/javascript">';
    echo 'alert("You were logged off due to inactivity");';
    echo '</script>';

    session_unset();
    session_destroy();
}
$_SESSION['last_activity'] = time(); 

3 个答案:

答案 0 :(得分:0)

为了避免刷新问题,你必须转向ajax才能使用,因为PHP纯粹是服务器端。它可以像在php页面中进行测试一样简单,您可以使用Ajax进行刷新。查看jQuery.ajax()函数,并将其与javascript结合使用

setTimeout ( expression, timeout );
setInterval ( expression, interval );

有关.ajax的信息,请参阅: http://api.jquery.com/jquery.ajax/

有关setInterval og setTimeout的信息,请参阅: http://javascript.info/tutorial/settimeout-setinterval

答案 1 :(得分:0)

  

我认为弹出窗口不能使用PHP或CSS显示..

     

我的建议是使用javascript或jquery ..

     

使用Javascript函数 setInterval 来检查idel时间

答案 2 :(得分:0)

如果从客户端考虑,这两个答案都是正确的。从服务器端方法,您需要使用推送机制。此链接(pushing data from server to client in php)将帮助您了解如何从服务器推送数据(如您想要显示弹出窗口)。 但是这个解决方案将比这两个更难。