静态页面利用JS读取cookies记住用户信息

yizhihongxing
  1. 静态页面读取cookie的基本原理

在使用JavaScript读取cookie之前,我们需要先了解什么是cookie。Cookie是指客户端保存在浏览器中的一小段文本数据,由Web服务器生成并存储在用户计算机上,当下次用户访问相同的站点时,服务器可读取此cookie的值,来判断用户是否合法,以及是否登录过等。

读取cookie需要使用JavaScript中的document.cookie属性。该属性可以返回当前网页保存的所有cookie,以字符串的形式表示。cookie通常是由名称、值、过期时间、路径和域等多个字段构成的。为了方便读取cookie,我们可以自定义一个函数来实现字符串转换为json格式的cookie,以便更方便的进行读取:

function cookieToJSON () {
    var cookies = document.cookie.split(';');
    var cookieJSON = {};
    for (var i = 0; i < cookies.length; i++) {
        var parts = cookies[i].split('=');
        cookieJSON[parts.shift().trim()] = decodeURI(parts.join('='));
    }
    return cookieJSON;
}

上述代码中,document.cookie.split(";")会把所有的分号拆开,在经过循环遍历后将一个个的cookie用等号分成数组,根据数组索引的位置,将去掉首位空格的name作为cookie的键,将值解码为字符串后作为cookie的值,最后组装成一个json格式返回。

  1. 利用JS读取cookie并记住用户信息的示例

(1)用户登录页面

在用户登录页面,通常需要用户输入用户名和密码,然后将这些信息提交到后台进行验证,验证通过后再存储用户信息。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>登录页面</title>
    </head>
    <body>
        <form>
            <label for="username">用户名:</label>
            <input type="text" id="username">
            <br>
            <label for="password">密码:</label>
            <input type="password" id="password">
            <br>
            <button type="button" onclick="login()">登录</button>
        </form>
        <script>
            function login() {
                // 根据用户输入的用户名和密码进行验证,如验证通过则存储cookie
                var username = document.getElementById("username").value;
                var password = document.getElementById("password").value;
                if (username === 'admin' && password === '123456') {
                    var user = {
                        username: username,
                        timestamp: new Date().getTime() // 记录当前时间戳,用于判断是否过期
                    };
                    document.cookie = "user=" + encodeURIComponent(JSON.stringify(user)) // 存储cookie
                    alert('登录成功');
                    window.location.href = 'index.html'; // 跳转到主页
                } else {
                    alert('用户名或密码错误');
                }
            }
        </script>
    </body>
</html>

上述代码中,用户输入用户名和密码后,点击登录按钮时,调用login函数进行验证。如果验证通过,则生成一个名为user的cookie,并将用户信息存储为json格式。然后通过window.location.href将页面跳转到主页index.html。

(2)首页读取cookie并显示用户信息

在首页中,我们可以通过JS读取cookie,判断用户是否已经登录,并将用户信息显示出来。如果用户已经登录,则可以直接显示用户信息,否则显示登录按钮,引导用户进行登录。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>首页</title>
    </head>
    <body>
        <div id="user-info"></div>
        <div id="login-btn"></div>
        <script>
            // 读取cookie并显示用户信息
            var cookieJSON = cookieToJSON();
            if (cookieJSON.user) {
                var user = JSON.parse(cookieJSON.user);
                if (new Date().getTime() - user.timestamp > 3600 * 1000) { // 判断登录是否过期
                    document.cookie = "user=;expires=Thu, 01 Jan 1970 00:00:01 GMT"; // 登录已过期,清除cookie
                } else {
                    var loginStr = user.username + ',欢迎回来!';
                    document.getElementById('user-info').innerHTML = loginStr;
                    document.getElementById('login-btn').innerHTML = '<button onclick="logout()">退出登录</button>';
                }
            } else {
                document.getElementById('login-btn').innerHTML = '<button onclick="window.location.href=\'login.html\'">登录</button>';
            }

            // 退出登录
            function logout() {
                document.cookie = "user=;expires=Thu,01 Jan 1970 00:00:01 GMT"; // 清除cookie
                alert('退出登录成功');
                window.location.reload(); // 刷新页面
            }
        </script>
    </body>
</html>

上述代码中,通过调用cookieToJSON函数读取当前网站的cookie,并判断是否存在名为user的cookie。如果存在,则表示用户已经登录,将用户名和欢迎语显示出来,并显示退出登录按钮;如果不存在,则显示登录按钮,引导用户进行登录。当用户点击退出登录按钮时,调用logout函数,将已登录的cookie清除,并刷新页面即可。

值得注意的是,在存储cookie时,我们没有将过期时间设为10年或更长的时间,而是只设置到了1个小时,因为长时间的cookie不仅存在安全隐患,而且可能会影响用户的体验。当然,这个时间可以根据实际情况进行修改。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:静态页面利用JS读取cookies记住用户信息 - Python技术站

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

相关文章

  • 用python制作个音乐下载器

    制作一个音乐下载器需要完成以下几个步骤: 步骤一:确定下载的音乐网站 首先要确定下载的音乐网站,一般常见的网站包括QQ音乐、酷狗音乐、网易云音乐等。不同的网站采取的下载方式可能有所不同,因此需要先确定目标网站的下载方式。 步骤二:分析目标网站的下载方式 对于不同的网站,其下载方式可能存在差异,因此需要使用网络爬虫对网站进行分析,找到下载音乐的方式。常见的方案…

    JavaScript 2023年5月28日
    00
  • jQuery中 DOM节点操作方法大全

    jQuery中 DOM节点操作方法大全 在jQuery中,DOM节点操作是非常常见和重要的,本文将会介绍jQuery中常用的DOM节点操作方法,包括增删改查等操作。 一、添加节点操作 append和appendTo append:向元素内部的最后面添加新的元素 appendTo:将新的元素添加到现有元素的内部的最后面 示例代码如下: // 在id为test的…

    JavaScript 2023年6月10日
    00
  • vue webpack重写cookie路径的方法

    让我们来详细讲解“vue webpack重写cookie路径的方法”的完整攻略。 什么是cookie路径重写 cookie是一种在访问者计算机中存储数据的小型文本文件,它在Web应用程序中广为使用。默认情况下,如果没有指定cookie的路径,则 cookie被设置为页面当前路径。当你使用Vue和Webpack构建一个Web应用程序时,应用程序的路径可能不会在…

    JavaScript 2023年6月11日
    00
  • JS变量中有var定义和无var定义的区别以及es6中let命令和const命令

    JS变量中有var定义和无var定义的区别 在Javascript中,有使用var定义变量和不使用var直接定义变量两种方式。 1. 使用var定义变量 使用var定义的变量会存在变量提升,即在变量声明之前,该变量也可以被访问到。这种定义方式的变量作用域是该变量所在的函数作用域(如果在函数内定义)或全局作用域(如果在函数外定义)。 示例1:使用var定义变量…

    JavaScript 2023年6月10日
    00
  • 5分钟快速搭建vue3+ts+vite+pinia项目

    以下是详细讲解“5分钟快速搭建vue3+ts+vite+pinia项目”的完整攻略。 1. 创建项目 首先,我们需要先安装 Node.js 和 npm 包管理器,然后通过 npm 在命令行中执行以下命令来创建一个新的 Vue 3 TypeScript 项目: npm init vite@latest my-project –template vue-ts …

    JavaScript 2023年6月11日
    00
  • JavaScript时间戳与时间日期间相互转换

    下面我将详细讲解“JavaScript 时间戳与时间日期间相互转换”的完整攻略。 什么是时间戳? 时间戳是用于表示时间的一种方式,它是自1970年1月1日 00:00:00 UTC到当前时间的毫秒数。JavaScript只支持精确到毫秒级别的时间戳。 时间戳的好处是可以通过它来进行时间比较或计算时间差等操作,并且可以通过时间戳在不同的设备和系统之间进行时间的…

    JavaScript 2023年5月27日
    00
  • JavaScript中SetInterval与setTimeout的用法详解

    JavaScript中SetInterval与setTimeout的用法详解 SetInterval 概念 setInterval()是JavaScript中的一个全局函数,用于创建一个可以重复执行的定时器。 语法 setInterval(func, delay, [param1, param2, …]); func:定时器每次运行时要调用的函数 del…

    JavaScript 2023年5月27日
    00
  • JavaScript中调用函数的4种方式代码实例

    让我来详细讲解一下“JavaScript中调用函数的4种方式代码实例”。 1. 直接调用函数 直接调用函数指的是使用函数名,后跟一对圆括号,不带任何修饰符或执行环境调用函数。 示例: function sayHello() { console.log("Hello!"); } sayHello(); 上述示例中我们定义了一个函数 sayH…

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