【问题标题】:PHP/Javascript Session Timeout with warning带有警告的 PHP/Javascript 会话超时
【发布时间】:2012-07-17 08:05:03
【问题描述】:

有谁知道我可以在哪里阅读教程,或者知道如何创建一个内置警告的基于 Javascript 的会话超时,以及可选的这些功能:

  • 用户活动重置计时器
  • 与数据库交互(最后一次看到等)
  • 如果不活动,它将注销用户(通过重定向到 logout.php 页)
  • 在注销用户之前,它会显示一条弹出消息,询问 如果他们想继续

很遗憾,我对 Javascript 不太了解。

【问题讨论】:

  • Javascript 完全是客户端的;如果您根据您的建议依赖任何数量的安全性,那么它无论如何都不安全。客户端代码不仅可编辑,还可以禁用。由于同样的原因,允许 javascript 直接与数据库通信也是非常不明智的。
  • 我使用这个是在管理员登录之后。这段代码不会对公众开放,他们必须通过 PHP 登录并在数据库上才能登录。但是是是否有另一种更安全的超时功能替代方案?

标签: php javascript session popup timeout


【解决方案1】:

我不知道您的网站是如何完成的,但如果做得正确,您应该有一个登录会话和某种后端控制系统,如果前一个操作是在 X 分钟/小时前进行的,则该系统会拒绝任何操作,并且自动使用户过期。如果你想实现一些客户端代码,你应该有一个javascript计时器,当过期时间即将结束时提醒用户,你也可以在过期时间到达后将用户重定向到主页或登录页面。这样,所有的安全功能都在后端,而 javascript 仅作为显示行为的显示措施。

更新:

setInterval(function(){alert("Hey, your session is ending")},360000);

setInterval(function(){
    redirect();
},720000);

function redirect(){
    document.location = "../logout.php"
}

更新2:

setInterval(function(){
    logout();
},600000);

function logout(){
    if(confirm('Logout?'))
        redirect();
    else
        alert('OK! keeping you logged in')
}

function redirect(){
    document.location = "../logout.php"
}

带有此代码的每个页面都会在 10 分钟后询问用户是否要退出。这意味着您的会话不能自行过期,您必须将控制权留给用户

【讨论】:

  • 我目前的问题是在哪里可以找到您刚才所说的代码……您基本上重复了我的问题……
  • 客户端还是服务器端?服务器端真的取决于你的实现。客户端正如我所说,使用javascript计时器:检查更新答案
  • @kdjernigan 是你要找的吗?
  • 是的,除非有办法让他们有 2 个选项,继续会话并注销?
  • 进展如何?完成后不要忘记关闭答案
【解决方案2】:

5 分钟后退出会话

<script type="text/javascript">
        var interval;
         $(document).on('mousemove', function () {
             clearInterval(interval);
             var coutdown = 5 * 60, $timer = $('.timer'); // After 5 minutes session expired  (mouse button click code)
             $timer.text(coutdown);
             interval = setInterval(function () {
                 $timer.text(--coutdown);

                 if (coutdown === 0) {

                     alert("Session expired. User successfully logged out.");
                     window.location = "UserLogin.php";
                 }

             }, 1000);
         }).mousemove();

         var interval;
                     $(document).on('keydown', function () {
             clearInterval(interval);
             var coutdown =5 * 60, $timer = $('.timer'); // After 5 minutes session expired (keyboard button press code)
             $timer.text(coutdown);
             interval = setInterval(function () {
                 $timer.text(--coutdown);

                 if (coutdown === 0) {

                     alert("Session expired User successfully logout.");
                     window.location = "UserLogin.php";
                 }

             }, 1000);
         }).mousemove();
    <script>



         <html>
            <div class="timer">
                 Time of session display on page 
            </div>
        </html>

【讨论】:

  • 这段代码是你写的吗?如果没有,链接将非常有帮助,因为 OP 正在寻找除了代码本身之外的更多解释,以便自己学习。
  • 不,我的代码,这不是复制的@TamaMcGlinn
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-18
  • 2016-02-06
  • 1970-01-01
  • 2016-09-11
  • 1970-01-01
相关资源
最近更新 更多