js 获取cookie_利用js模拟用户的cookie信息保存

7e1bc6d9ab8ea9af7c61efc1673326b0.png

注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6814761849708347907/

默认已完成爬虫文档《爬虫学习文档顺序》

0d7496fe2a71a115b01161f3aaf7ecdc.png

并简单搭建完展示页面和管理后台的练习部分

例如

管理后台:

2a5c9b2e2a1a194b9618c96b5ff820ee.png

展示页面:

efa554e27c7f923afe118423a105242b.png

接下来完成Cookie的实现

思路如下图:

53952270f17e31466576c5df946e773d.png

创建一个js文件和index.jsp文件

b262d83f5e43e9a61a78a9c58ecda701.png

jsp文件内容,都是默认实现,主要是为了引入analytics.js

c7df0f1f5738b9e06d815aaec426de43.png

编写analytics.js文件,函数初始结构

552e4c7ac2387078f748e0ff319b183c.png

添加一个CookieUtil工具

8c77eacf9755fb6495265fc3fd22878c.png

获取cookie的函数

6bed789f8e8a8c451240a1323f80cb7e.png

设置cookie的函数

9e7ed155446419e39d8d2207f713df43.png

后续部分

245560a25414f2750687a20a5091ca2c.png

再创建一个tracker,添加一个日志打印函数,方便我们调试

6047d3c1dd2cfea3969bc30f1394a237.png

添加变量keys

b386fff04cebfadb78ae95a8c0274723.png

创建会话建立函数

47ff38a507ecf1446caf71972b7969c4.png

调用

2690673847ba18f23082cfddef84f8bd.png

启动测试下(ctrl+f5强制刷新js,否则可能缓存看不到)

8d0e3d782e685a1972244fd763fe1782.png

继续编写js

创建generateId产生UUID

fd58b90aadf0c45ed91a07caf61f9dbc.png

添加sid、uuid的get/set方法,类似于java中的部分

0503638e28d1e4a3c60ce070c5e70923.png

添加一个更新方法的函数

6b0526f153ade0574fdba9a6ae4f9f8c.png

创建会话函数

de08ead35dcf1b0deb1381e662b9c949.png

开始会话

46d21c1cbd96075542518db8bddca1de.png

查看效果

00a0d37551d722315b0a2e680d27d80c.png

查看cookie

36371c3456c800d5f64f34ca27db1683.png

522754d4a811e205ac600aa9985b1de1.png

继续完成js

增加一个配置变量clientConfig

23b050dec385ac2f8b769d13d60d2248.png

判断拜访时间是否过期

c4eba707121c747c4ac3a45ef50d03c0.png

添加到开始会话里

318494d4dd0fcf09b2c8188cfc431d36.png

查看效果(更改下过期时间测试)

52a6df0a7702b50a56e4c2ae53e37a6b.png

查看

4ed5c77af861ce4079a08dafb3bcf8cc.png

10s以后

0c9b7558acf61051865f072e11b838a2.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是一个简单的仿小米闪购的登录注册页面代码示例,包含利用Cookie保存用户信息的功能: HTML代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>小米闪购登录注册</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="container"> <div class="card"> <div class="card-header"> <h1>登录</h1> <a href="#" class="switch-btn">注册</a> </div> <div class="card-body"> <form id="login-form"> <label for="username">用户名</label> <input type="text" id="username" name="username" required> <label for="password">密码</label> <input type="password" id="password" name="password" required> <div class="remember-me"> <input type="checkbox" id="rememberMe" name="rememberMe"> <label for="rememberMe">记住我</label> </div> <button type="submit">登录</button> </form> </div> </div> <div class="card hidden"> <div class="card-header"> <h1>注册</h1> <a href="#" class="switch-btn">登录</a> </div> <div class="card-body"> <form id="register-form"> <label for="reg-username">用户名</label> <input type="text" id="reg-username" name="username" required> <label for="reg-password">密码</label> <input type="password" id="reg-password" name="password" required> <label for="confirm-password">确认密码</label> <input type="password" id="confirm-password" name="confirmPassword" required> <button type="submit">注册</button> </form> </div> </div> </div> <script src="app.js"></script> </body> </html> ``` CSS代码: ```css * { margin: 0; padding: 0; box-sizing: border-box; } body { background-color: #f5f5f5; font-family: Arial, sans-serif; } .container { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; } .card { background-color: #fff; box-shadow: 0 0.4rem 0.8rem rgba(0, 0, 0, 0.1); border-radius: 0.4rem; padding: 2rem; width: 28rem; max-width: 90%; } .card-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1.5rem; } .card-header h1 { font-size: 2rem; font-weight: bold; color: #333; } .switch-btn { font-size: 1.2rem; color: #999; text-decoration: none; transition: color 0.2s; } .switch-btn:hover { color: #333; } .hidden { display: none; } .card-body label { display: block; margin-bottom: 0.5rem; font-size: 1.2rem; color: #333; } .card-body input[type="text"], .card-body input[type="password"] { display: block; width: 100%; padding: 1rem; border: 1px solid #ccc; border-radius: 0.4rem; margin-bottom: 1rem; font-size: 1.2rem; color: #333; } .card-body .remember-me { display: flex; align-items: center; margin-bottom: 1rem; } .card-body .remember-me label { font-size: 1.2rem; color: #333; margin-left: 0.5rem; } .card-body button[type="submit"] { display: block; width: 100%; padding: 1rem; background-color: #ff6700; color: #fff; border: none; border-radius: 0.4rem; font-size: 1.2rem; cursor: pointer; transition: background-color 0.2s; } .card-body button[type="submit"]:hover { background-color: #ff8000; } .error-msg { color: #ff0033; font-size: 1.2rem; margin-top: 0.5rem; } ``` JS代码: ```javascript // 获取DOM元素 const loginCard = document.querySelector('.container .card:first-child'); const registerCard = document.querySelector('.container .card:last-child'); const switchBtns = document.querySelectorAll('.switch-btn'); const loginForm = document.querySelector('#login-form'); const registerForm = document.querySelector('#register-form'); const errorMsgs = document.querySelectorAll('.error-msg'); // 切换登录和注册卡片 switchBtns.forEach(btn => { btn.addEventListener('click', () => { loginCard.classList.toggle('hidden'); registerCard.classList.toggle('hidden'); }); }); // 处理登录表单提交事件 loginForm.addEventListener('submit', e => { e.preventDefault(); const username = loginForm.username.value.trim(); const password = loginForm.password.value.trim(); const rememberMe = loginForm.rememberMe.checked; // 模拟异步请求 setTimeout(() => { if (username === 'admin' && password === '123456') { // 登录成功 if (rememberMe) { // 将用户名和记住我状态保存Cookie中 document.cookie = `username=${username}; expires=${new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toUTCString()}; path=/`; document.cookie = `rememberMe=${rememberMe}; expires=${new Date(Date.now() + 7 * 24 * 60 * 60 * 1000).toUTCString()}; path=/`; } else { // 删除Cookie中的用户名和记住我状态 document.cookie = `username=; expires=${new Date(0).toUTCString()}; path=/`; document.cookie = `rememberMe=; expires=${new Date(0).toUTCString()}; path=/`; } window.location.href = 'index.html'; // 跳转到主页 } else { // 登录失败 errorMsgs[0].textContent = '用户名或密码错误'; } }, 1000); }); // 处理注册表单提交事件 registerForm.addEventListener('submit', e => { e.preventDefault(); const username = registerForm.username.value.trim(); const password = registerForm.password.value.trim(); const confirmPassword = registerForm.confirmPassword.value.trim(); if (password !== confirmPassword) { errorMsgs[1].textContent = '两次输入的密码不一致'; return; } // 模拟异步请求 setTimeout(() => { // 注册成功 window.location.href = 'login.html'; // 跳转到登录页 }, 1000); }); ``` 在上述代码中,我们定义了两个表单(登录表单和注册表单),并使用JavaScript处理了它们的提交事件。在登录表单提交事件中,我们可以根据用户输入的用户名和密码进行验证,并根据用户是否选择记住我选项来保存或删除Cookie中的用户信息。在注册表单提交事件中,我们只是模拟了异步请求,并在请求成功后将页面重定向到登录页。 注意,在实际开发中,我们需要使用更加严格的安全措施来保护用户的隐私信息。例如,使用HTTPS协议来传输敏感信息、对密码进行哈希处理等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值