PHP利用Cookie设置用户30分钟未操作自动退出功能

yizhihongxing

下面是设置自动退出功能的完整攻略。

1. 首先需要了解什么是Cookie

Cookie是一种存在于用户浏览器本地的数据。利用Cookie可以将信息保存在用户的电脑或移动设备上,以便进行持久化访问。PHP中可以使用setcookie()函数设置Cookie。

2. 利用setcookie()函数设置Cookie

setcookie(name, value, expire, path, domain, secure, httponly);

其中:

  • name:Cookie的名称
  • value:Cookie的值
  • expire:Cookie的过期时间,如果该参数被忽略,则默认是在浏览器关闭时过期。时间戳格式,秒数。
  • path:Cookie的路径,如果该参数被忽略,则默认是当前文档路径。
  • domain:Cookie的作用域,指定可访问该Cookie的域名。
  • secure:如果该参数被设置为true,那么Cookie只有通过HTTPS安全协议才能被传输。
  • httponly:如果该参数被设置为true,那么该Cookie将只能通过HTTP协议传输,而无法通过JavaScript访问。

例如:设置一个名为"user_id",值为"123"的Cookie,有效期为30分钟,作用域为整个网站:

setcookie('user_id', '123', time() + 1800, '/');

3. 检测Cookie是否存在,若存在则判断是否过期

利用isset()函数判断Cookie是否存在。利用time()函数得到当前时间的时间戳,与Cookie过期时间比较,如果当前时间大于Cookie的过期时间,说明该Cookie已过期,可以进行自动退出操作。

例如:

//检测Cookie是否存在
if(isset($_COOKIE['user_id'])){
    //获取Cookie过期时间
    $expire_time = $_COOKIE['user_id'] + 1800;
    //判断当前时间是否大于过期时间
    if(time() >= $expire_time){
        //Cookie已过期,进行自动退出操作
        //...
    }else{
        //Cookie未过期,继续执行后续操作
        //...
    }
}

4. 示例1:自动退出操作

例如,用户登录之后30分钟未操作,将自动退出并跳转到登录页面。

//判断用户是否登录
if(isset($_SESSION['user_id'])){
    //判断用户是否有操作
    if(isset($_COOKIE['last_activity'])){
        //获取上次操作时间
        $last_activity = $_COOKIE['last_activity'];
        //判断上次操作时间和当前时间间隔是否大于30分钟
        if(time() - $last_activity > 1800){
            //自动退出
            unset($_SESSION['user_id']);
            setcookie('user_id', '', time() - 3600, '/');
            setcookie('last_activity', '', time() - 3600, '/');
            header('Location: login.php');
            exit;
        }else{
            //更新操作时间
            setcookie('last_activity', time(), time() + 1800, '/');
        }
    }else{
        //设置初始操作时间
        setcookie('last_activity', time(), time() + 1800, '/');
    }
}else{
    //用户未登录
    header('Location: login.php');
    exit;
}

5. 示例2:提示用户即将自动退出

例如,用户登录之后20分钟未操作,弹出提示信息,用户可以选择继续操作或者退出。

//判断用户是否登录
if(isset($_SESSION['user_id'])){
    //判断用户是否有操作
    if(isset($_COOKIE['last_activity'])){
        //获取上次操作时间
        $last_activity = $_COOKIE['last_activity'];
        //判断上次操作时间和当前时间间隔是否大于20分钟
        if(time() - $last_activity > 1200){
            //弹出提示信息
            echo '<script type="text/javascript">if(confirm("您已经20分钟没有操作了,即将自动退出,是否继续?")){window.location.href="xxx.php";}else{window.location.href="logout.php";}</script>';
        }else{
            //更新操作时间
            setcookie('last_activity', time(), time() + 1800, '/');
        }
    }else{
        //设置初始操作时间
        setcookie('last_activity', time(), time() + 1800, '/');
    }
}else{
    //用户未登录
    header('Location: login.php');
    exit;
}

以上就是设置自动退出功能的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP利用Cookie设置用户30分钟未操作自动退出功能 - Python技术站

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

相关文章

  • JavaScript数组的定义及数字操作技巧

    关于JavaScript数组的定义及数字操作技巧,以下是一份完整攻略: 定义JavaScript数组 1. 直接定义 使用[]定义一个空数组,或者使用[element1, element2, …]定义一个带有初始元素的数组。 示例:定义一个空数组和一个包含元素的数组 let arr1 = []; let arr2 = [‘apple’, ‘banana’…

    JavaScript 2023年5月19日
    00
  • javascript基础之数据类型详解

    JavaScript基础之数据类型详解 1. 数据类型的概念和介绍 在JavaScript中,数据类型是指数据的种类和类型。JavaScript中有7种数据类型,分别是:数字(number)、字符串(string)、布尔值(boolean)、空(null)、未定义(undefined)、对象(object)、符号(symbol)。 其中,数字、字符串和布尔值…

    JavaScript 2023年5月18日
    00
  • MutationObserver监视对DOM 树所做更改的功能妙用

    MutationObserver是一种Web API,它可以监视对DOM树所做的更改,并在更改发生时触发回调函数。它可以监视DOM的三类更改:子节点树的更改、属性的更改以及文本内容的更改。MutationObserver的用途非常广泛,特别是在与React、Vue等前端框架结合使用时,可以帮助我们轻松地实现数据绑定、自定义指令等功能。 MutationObs…

    JavaScript 2023年6月11日
    00
  • 分享19个JavaScript 有用的简写写法

    下面为您详细讲解“分享19个JavaScript 有用的简写写法”的完整攻略。 前言 JavaScript 是目前应用广泛的编程语言之一,对于初学者来说,熟练使用一些简写写法可以提高编码效率,降低调试成本。本文将分享19个 JavaScript 有用的简写写法,方便开发者们在使用 JavaScript 过程中更加高效、便捷地完成编码工作。 内容 1. Ter…

    JavaScript 2023年5月19日
    00
  • 简单聊聊Js中的常见错误类型

    简单聊聊Js中的常见错误类型 在Js编程中,我们不可避免地会遇到各种类型的错误。了解这些错误类型及其产生的原因,可以帮助我们更快速地定位错误并解决问题。下面就让我们来简单聊聊Js中的常见错误类型。 1. 引用错误(ReferenceError) 引用错误通常发生在引用未定义的变量或函数时。例如: console.log(a); // Uncaught Ref…

    JavaScript 2023年6月1日
    00
  • js中常见的4种创建对象方式与优缺点

    关于JavaScript中常见的四种创建对象方式和它们的优缺点的详细讲解如下: 一、对象字面量方式 使用对象字面量方式创建对象是JavaScript中最常见、最简单的方式。该方法的语法非常简洁,只需在大括号中定义对象属性和方法即可。 示例代码如下: // 创建一个对象 var obj = { name: "Lucy", age: 20, …

    JavaScript 2023年5月27日
    00
  • JavaScript中的连字符详解

    JavaScript中的连字符详解 什么是连字符 在JavaScript中,连字符是由破折号(-)组成的标识符,它也被称为短横线或减号。在 HTML 和 CSS 中,连字符也经常被使用。在 JavaScript 中,我们可以使用连字符作为变量名、函数名或方法名。 连字符的命名规则 在 JavaScript 中,连字符可以出现在变量名、函数名或方法名中,但是我…

    JavaScript 2023年5月28日
    00
  • JavaScript进阶之前端文件上传和下载示例详解

    JavaScript进阶之前端文件上传和下载示例详解 本文将详细讲解前端文件上传和下载的过程和实现方法,包括如何使用HTML5 FormData API、AJAX和原生JavaScript来完成文件上传和下载功能的开发。 文件上传 文件上传是我们日常开发中常用的功能之一。下面我们通过两个示例来讲解文件上传的实现。 示例1:上传图片并预览 HTML部分 &lt…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部