【问题标题】:How to show a popup when the session has timed out会话超时时如何显示弹出窗口
【发布时间】:2014-01-16 10:30:15
【问题描述】:

我目前一直在开发我的网站,但遇到了一些困难。

基本上我想在用户空闲一段时间后显示一个弹出窗口;我不知道如何使用似乎是流行的解决方案的 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(); 

【问题讨论】:

    标签: javascript php ajax jquery session


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      使用 Javascript 函数 setInterval 来检查空闲时间

      【讨论】:

      • 如果我使用 setInterval 我将如何执行 php 代码来取消设置会话并查询我的数据库以将它们设置为脱机?
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2023-03-22
        • 2013-06-21
        • 1970-01-01
        • 2018-03-10
        • 1970-01-01
        • 2016-02-18
        • 1970-01-01
        • 2016-05-30
        • 1970-01-01
        相关资源
        最近更新 更多