更新simple代码

This commit is contained in:
云泽网 2025-05-27 01:33:18 +08:00
parent 770b8c9092
commit b63b80318b

View File

@ -8,26 +8,22 @@ if (session('user_id')) {
}
// 如果session未登录检查cookie
else {
$userId = cookie('user_id');
$expireTime = cookie('expire_time');
$isAutoLogin = cookie('is_auto_login');
$userAccount = cookie('user_account');
$userPassword = cookie('user_password');
// 如果cookie中有有效的登录信息
if ($userId && $expireTime && $isAutoLogin && $userAccount && $userPassword) {
// 验证时间戳
$currentTime = time() * 1000; // 转换为毫秒
if ($currentTime < intval($expireTime)) {
// 恢复session
session('user_id', $userId);
session('user_name', cookie('user_name'));
session('user_avatar', cookie('user_avatar'));
$isLoggedIn = true;
}
if ($userAccount) {
// 恢复session
session('user_id', cookie('user_id'));
session('user_name', cookie('user_name'));
session('user_avatar', cookie('user_avatar'));
$isLoggedIn = true;
}
}
// 添加一个隐藏的div来存储登录状态
$loginStatus = [
'isLoggedIn' => $isLoggedIn,
'userAccount' => $userAccount ?? ''
];
$userInfo = [
'is_login' => $isLoggedIn,
'name' => session('user_name'),
@ -36,8 +32,9 @@ $userInfo = [
?>
<!-- 添加一个隐藏的div来存储登录状态 -->
<div id="loginStatus" style="display: none;" data-is-logged-in="{$isLoggedIn}" data-expire-time="{$expireTime ?? ''}"
data-is-auto-login="{$isAutoLogin ?? ''}">
<div id="loginStatus" style="display: none;"
data-is-logged-in="{$isLoggedIn}"
data-user-account="{$userAccount ?? ''}">
</div>
<div style="display: flex;flex-direction: column;">
@ -367,6 +364,36 @@ $userInfo = [
</style>
<script>
// 在页面加载时立即执行
(function() {
// 检查是否已经刷新过
if (sessionStorage.getItem('has_refreshed') === 'true') {
return;
}
// 检查localStorage中是否有用户账号
var userAccount = localStorage.getItem('user_account');
if (userAccount) {
// 同步到cookie
document.cookie = "user_account=" + userAccount + "; path=/";
// 如果有其他必要的数据也同步到cookie
var userId = localStorage.getItem('user_id');
var userName = localStorage.getItem('user_name');
var userAvatar = localStorage.getItem('user_avatar');
if (userId) document.cookie = "user_id=" + userId + "; path=/";
if (userName) document.cookie = "user_name=" + userName + "; path=/";
if (userAvatar) document.cookie = "user_avatar=" + userAvatar + "; path=/";
// 刷新页面以应用新的cookie并标记已刷新
if (!document.cookie.includes('user_id')) {
sessionStorage.setItem('has_refreshed', 'true');
window.location.reload();
}
}
})();
layui.use(['carousel', 'form', 'layer'], function () {
var carousel = layui.carousel, form = layui.form, layer = layui.layer, $ = layui.$;
@ -382,35 +409,40 @@ $userInfo = [
return;
}
var expireTime = localStorage.getItem('expire_time');
var isAutoLogin = localStorage.getItem('is_auto_login');
if (expireTime && new Date().getTime() < expireTime && isAutoLogin === 'true') {
// 从localStorage获取用户账号
var userAccount = localStorage.getItem('user_account');
if (userAccount) {
// 标记已尝试自动登录
sessionStorage.setItem('auto_login_attempted', 'true');
var account = localStorage.getItem('user_account');
var password = atob(localStorage.getItem('user_password'));
// 发送自动登录请求
$.ajax({
url: '/index/user/login',
type: 'POST',
data: {
account: account,
password: password
account: userAccount,
password: atob(localStorage.getItem('user_password'))
},
dataType: 'json',
success: function (res) {
if (res.code === 0) {
// 登录成功,刷新页面
window.location.reload();
// 设置cookie
document.cookie = "user_id=" + res.data.id + "; path=/";
document.cookie = "user_name=" + res.data.name + "; path=/";
document.cookie = "user_avatar=" + res.data.avatar + "; path=/";
document.cookie = "user_account=" + userAccount + "; path=/";
// 同时更新localStorage
localStorage.setItem('user_id', res.data.id);
localStorage.setItem('user_name', res.data.name);
localStorage.setItem('user_avatar', res.data.avatar);
// 登录成功,强制刷新页面
window.location.href = window.location.href + '?t=' + new Date().getTime();
} else {
// 登录失败,清除所有相关存储
localStorage.removeItem('user_account');
localStorage.removeItem('user_password');
localStorage.removeItem('expire_time');
localStorage.removeItem('is_auto_login');
sessionStorage.removeItem('auto_login_attempted');
}
}
@ -503,21 +535,23 @@ $userInfo = [
// 清除localStorage
localStorage.removeItem('user_account');
localStorage.removeItem('user_password');
localStorage.removeItem('expire_time');
localStorage.removeItem('is_auto_login');
localStorage.removeItem('user_id');
localStorage.removeItem('user_name');
localStorage.removeItem('user_avatar');
// 清除sessionStorage
sessionStorage.removeItem('auto_login_attempted');
sessionStorage.removeItem('has_refreshed');
// 清除cookie
document.cookie = "user_id=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
document.cookie = "user_name=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
document.cookie = "user_avatar=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
document.cookie = "expire_time=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
document.cookie = "is_auto_login=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
document.cookie = "user_account=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
document.cookie = "user_password=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
// 刷新页面
window.location.reload();
// 强制刷新页面,不使用缓存
window.location.href = window.location.href + '?t=' + new Date().getTime();
}
}
});
@ -581,13 +615,19 @@ $userInfo = [
document.cookie = "user_avatar=" + res.data.avatar + "; path=/";
document.cookie = "expire_time=" + expireTime + "; path=/";
document.cookie = "is_auto_login=true; path=/";
document.cookie = "user_account=" + data.field.account + "; path=/";
document.cookie = "user_password=" + btoa(data.field.password) + "; path=/";
// 设置sessionStorage
sessionStorage.setItem('auto_login_attempted', 'true');
layer.msg('登录成功', {
icon: 1,
time: 2000,
shade: 0.3
}, function () {
window.location.reload();
// 强制刷新页面,不使用缓存
window.location.href = window.location.href + '?t=' + new Date().getTime();
});
} else {
layer.msg(res.msg, {