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

  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日

相关文章

  • JSP和Struts解决用户退出问题

    当用户想要退出系统时,我们需要清除用户的登录状态,以保证安全性和私密性。在JSP和Struts中,都提供了比较简便的实现方式。 JSP解决用户退出问题 在JSP中,我们可以通过Session对象来保存用户登录状态。因此,当用户想要退出系统时,我们只需要清除Session对象,就可以实现该功能。 示例代码: <% session.removeAttrib…

    JavaScript 2023年6月11日
    00
  • ES6 Class中实现私有属性的一些方法总结

    下面是关于“ES6 Class中实现私有属性的一些方法总结”的完整攻略: 1. 私有属性的概念 在ES6的Class中,私有属性是指只能在类内部访问,而无法在类外部访问的属性。目前,ES6并不支持直接定义私有属性,但是可以通过一些方法实现类似于私有属性的效果。 2. 实现私有属性的方法 以下是几种实现私有属性的方法: 2.1 在构造函数中定义私有属性 这种方…

    JavaScript 2023年6月10日
    00
  • js每隔两秒输出数组中的一项(实例)

    下面是讲解“js每隔两秒输出数组中的一项”的完整攻略,具体步骤如下: 1. 准备工作 在开始实现之前,我们需要明确几个问题: 哪个数组需要输出? 如何输出数组中的一项? 如何达到每隔两秒输出一项的效果? 针对以上问题,我们可以做如下解答: 这里假设我们要输出的数组是一个长度为n的一维数组 输出数组中的一项可以使用数组索引,即array[index]的形式来实…

    JavaScript 2023年5月27日
    00
  • JavaScript 七大技巧(一)

    JavaScript 七大技巧(一)攻略 JavaScript 是一门强大而灵活的编程语言,在编写高质量的代码时,使用一些技巧可以提高代码的可读性、可维护性和性能。下面是 JavaScript 中的七大技巧,本篇攻略将详细讲解其中的一些。 1. 使用严格模式 使用严格模式可以在编码时抛出更多的错误,这有助于提高代码的质量和可读性。而且,使用严格模式能够避免一…

    JavaScript 2023年5月17日
    00
  • javascript使用for循环批量注册的事件不能正确获取索引值的解决方法

    当使用 for 循环批量注册事件时,经常会遇到无法正确捕获循环变量 i 的问题。这是因为循环结束后,i 的值会变成循环内最后一个迭代的值。这个问题通常称为 JavaScript 的闭包问题。下面是一个简单的示例说明: <!DOCTYPE html> <html> <head> <title>for循环注册事件示…

    JavaScript 2023年6月10日
    00
  • JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)

    JavaScript 是一门脚本语言,用于编写网页交互逻辑。在编写网页时,有时需要向网页上输出一些文本、图像等内容,JavaScript 提供了多种方式实现对网页的输出。本文将详细介绍 JavaScript 输出显示内容的四种方式:document.write、alert、innerHTML 和 console.log。 1. document.write …

    JavaScript 2023年5月28日
    00
  • 原生JS面向对象实现打砖块小游戏

    一、前言 打砖块小游戏是经典的游戏之一,其规则简单,玩法有趣且易上手。本篇攻略将带领大家使用原生JS面向对象的方式来实现打砖块小游戏。 二、需求分析 打砖块小游戏的基本需求如下: 游戏界面要有一个球、多个砖块和一个挡板,球碰到砖块或者挡板之后反弹。 球和挡板可以通过鼠标或者键盘来控制。 游戏结束条件:砖块被撞完或者球跌落屏幕下方。 三、实现步骤 Step 1…

    JavaScript 2023年6月10日
    00
  • js技巧–转义符”\”的妙用

    来讲讲JavaScript中转义符“\”的妙用吧。 转义符的作用 在JavaScript中,转义符“\”可以在特定情况下表示一些特殊字符或者让某些字符变得有特殊意义。例如,我们可以使用转义符将一些内容输出在HTML中的标签中。 转义符实现HTML中标签的插入 比如说,我们有一个网站,需要在页面上显示如下这段文字: <p>This is a par…

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