判断Session的过期时间 采用JavaScript实时显示剩余多少秒

判断Session的过期时间,一般可以采用服务器端的方法或客户端的方法,本文主要介绍采用JavaScript实时显示剩余多少秒的客户端实现方法。

准备工作

在实现过程中,需要获取Session的过期时间和当前时间,所以需要在服务器端将Session的过期时间存入到前端,可以将过期时间存入到一个隐藏域中。

代码示例:

<input type="hidden" id="expire_time" value="<?php echo $expire_time;?>"/>

实时判断Session过期时间

通过JavaScript来实现实时判断Session的过期时间,可以使用定时器setInterval函数每秒钟调用一次判断函数,来更新显示剩余的秒数。

代码示例:

// 获取过期时间
var expire_time = document.getElementById('expire_time').value;
// 定时器每秒执行函数
setInterval(function(){
    // 获取当前时间
    var now_time = Math.round(new Date().getTime()/1000);
    // 计算剩余时间
    var remain_time = parseInt(expire_time - now_time);
    // 如果过期,跳转到登录页
    if(remain_time<=0){
        window.location.href = '/login';
        return false;
    }
    // 显示剩余时间
    document.getElementById('remain_time').innerHTML = remain_time;
},1000);

上面的代码中,通过计算当前时间与过期时间的差值,得到Session的剩余时间,并更新到前端页面的相应元素中,如果Session已经过期,则跳转到登录页面。

示例说明

示例1:

假设过期时间为2022年1月1日23时59分59秒,利用PHP来获得此过期时间戳,然后存入到一个隐藏域的value属性中:

<?php
$expire_time = strtotime('2022-01-01 23:59:59');
?>
<input type="hidden" id="expire_time" value="<?php echo $expire_time;?>"/>

该段代码可以通过PHP的date()函数格式化输出当前时间戳:

<?php
echo date('Y-m-d H:i:s');
?>

示例2:

我们也可以利用session的cookie来实现该功能,具体步骤如下:

  1. 在生成session_id()之前,设置session.cookie_lifetime的值:
<?php
session_set_cookie_params(600); // 10分钟
session_start();
?>
  1. 在前端页面中使用JavaScript定时器服务,连接 HttpOnly session cookie 服务器端获取过期时间,然后计算并显示剩余秒数:
function getCookie(name) {
    var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
    if (arr = document.cookie.match(reg))
        return unescape(arr[2]);
    else
        return null;
}

var lastSeconds = parseInt(60 * getCookie("PHPSESSID_lifetime"));

setInterval(function(){
    if(!lastSeconds){return;}
    lastSeconds--;
    document.getElementById("lastSeconds").innerHTML = lastSeconds;
    if(lastSeconds==0){
        alert("Session过期")
    }
}, 1000);

这样我们就可以通过设置cookie时间来定时更新会话过期时间,然后再通过JavaScript来定时判断,实现实时显示剩余秒数了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:判断Session的过期时间 采用JavaScript实时显示剩余多少秒 - Python技术站

(0)
上一篇 2023年6月15日
下一篇 2023年6月15日

相关文章

  • Redis集群与SSM整合使用方法

    下面是Redis集群与SSM整合使用方法的完整攻略。 一、Redis集群 1.1 环境搭建 为了搭建Redis集群,我们需要先安装Redis和redis-trib.rb。Redis的下载链接为:https://redis.io/download ,安装好之后将redis-server添加到环境变量中。redis-trib.rb是Redis自带的一个Ruby脚…

    Java 2023年5月19日
    00
  • Java面试问题知识点总结

    Java面试问题知识点总结 Java开发人员在准备面试时需要了解重要的Java面试问题知识点。这是一个综合性的总结,包括Java基础知识,Java程序设计、Java集合、Java并发和多线程、Java面向对象特性和JVM等主题。 Java基础知识 Java基础知识包括Java程序的基础、Java的数据类型、Java的运算符、流程控制语句和异常处理等。 在基础…

    Java 2023年5月20日
    00
  • jsp使用cookie存储中文示例分享

    使用Cookie存储中文字符是Java Web开发常见的一个问题,本攻略主要介绍使用JSP存储中文字符到Cookie中的方法。具体操作如下: 1. 添加Cookie 使用JSP的Cookie类的setValue()函数,可以在Cookie中存储中文字符。示例代码如下: <% //新建一个中文Cookie Cookie cookie = new Cook…

    Java 2023年6月15日
    00
  • spring security 5.x实现兼容多种密码的加密方式

    简介 Spring Security是一个基于Spring框架提供的安全解决方案,已经成为Java Web开发的事实上标准。Spring Security 5.x支持多种密码加密方式,如MD5,SHA-1,SHA-256等常见的加密方式,还支持BCrypt、SCrypt、PBKDF2等强大的加密方式。下面是一个完整的攻略来实现Spring Security …

    Java 2023年5月20日
    00
  • SpringBoot深入了解日志的使用

    Spring Boot 深入了解日志的使用 在本文中,我们将深入了解 Spring Boot 中日志的使用。我们将介绍 Spring Boot 中常用的日志框架,以及如何在应用程序中使用日志记录器。 Spring Boot 中常用的日志框架 Spring Boot 中常用的日志框架有以下几种: Logback:Logback 是一个基于 Java 的日志框架…

    Java 2023年5月15日
    00
  • Android中断并重启一个Thread线程的简单方法

    如何在Android中断并重启一个Thread线程呢?以下提供两种方法: 方法一:使用interrupt()方法 在Thread线程中调用interrupt()方法可以中断正在执行的线程。以下是具体步骤: 在Thread的run()方法中添加循环。例如,循环执行某个任务: public void run() { while (!Thread.currentT…

    Java 2023年5月26日
    00
  • Java 线程池全面总结与详解

    Java 线程池是一种常用的多线程管理方式。它通过预先创建一组线程池,可以在执行任务时复用这些线程,从而减少线程创建和销毁所带来的开销,提高并发性能。下面是Java线程池的完整攻略: 一、Java 线程池的基本概念 线程池的核心思想是将任务和线程分离,将任务提交给线程池处理。在Java中,可以使用 java.util.concurrent 包下的 Threa…

    Java 2023年5月18日
    00
  • 一句话木马的原理及利用分析(asp,aspx,php,jsp)

    一句话木马(One-Liner PHP Script)是一种脚本程序,通常只有一行,但它可以使攻击者在远程服务器上获得完全控制。攻击者可以利用该程序来窃取数据、利用服务器资源进行攻击、加入僵尸网络等多种攻击。 在不同的开发语言中,一句话木马会有所不同,下面我们分别介绍一下: ASP和ASPX一句话木马 ASP和ASPX一句话木马的原理比较简单,就是将脚本代码…

    Java 2023年6月15日
    00
合作推广
合作推广
分享本页
返回顶部