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

Javascript 会话超时时如何显示弹出窗口,javascript,php,ajax,jquery,session,Javascript,Php,Ajax,Jquery,Session,我目前正在我的网站上工作,遇到了一些困难 基本上我想在用户空闲一段时间后显示一个弹出窗口;我不知道如何使用AJAX,它似乎是流行的解决方案 我的网站主要是PHP和CSS 这是我目前正在使用的,但它没有我希望的那样有效,因为弹出窗口只在屏幕刷新后显示 if (isset($_SESSION['username']) && isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity']

我目前正在我的网站上工作,遇到了一些困难

基本上我想在用户空闲一段时间后显示一个弹出窗口;我不知道如何使用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(); 
if(isset($会话['username'])和&isset($会话['last\u活动]])&(time()-$会话['last\u活动]>5)){
connect();
如果(!connect()){
die('无法连接:'.mysql_error());
标题(“refresh:3;url=/index.php”);
}
mysql_select_db('www');
$user=$\会话['username'];
mysql\u查询(“在线更新用户集='0'
其中用户名=“$user”);
回声';
echo“警报(“您因不活动而注销”);
回声';
session_unset();
会话_destroy();
}
$\会话['last\ u activity']=time();

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

setTimeout ( expression, timeout );
setInterval ( expression, interval );
有关.ajax的信息,请参阅:

有关setInterval og setTimeout的信息,请参阅:

我认为弹出窗口不是用PHP或CSS显示的

我的建议是使用javascript或jquery

使用Javascript函数setInterval检查idel时间


如果你从客户的角度考虑,这两个答案都是正确的。从服务器端方法来看,您需要使用推送机制。此链接()将帮助您了解如何从服务器推送数据(如您希望显示弹出窗口)。
但是这个解决方案比这两个更难。

如果我使用setInterval,那么如何执行php代码来取消会话设置并查询数据库以将其设置为脱机?