退出登录页点击返回键依然可以回到未退出时的页面的解决方法

1.在主应用里修改退出登录路由跳转方式,点击退出账号时移除token,使用history.pushState()进行跳转

history.pushState方法有三个参数,依次为:

title:新页面的标题,这里也可以填null。

state:一个与指定网址相关的状态对象,popstate事件触发时,该对象会传入回调函数。如果不需要这个对象,此处可以填null或者空字符串。

url:想要跳转的网址,必须与当前页面处在同一个域。

2.监听popstate,登录页禁用浏览器后退功能

 在页面加载时使用window.addEventListener()对popstate进行监听

window.addEventListener()的参数分别为:

参数1:监听的对象

参数2:事件处理函数

参数3:一个与指定网址相关的状态对象,不需要可以填null

参数4:想要跳转的网址

在页面卸载时移除监听,使浏览器后退功能正常使用

window.removeEventListener(event,function,useCapture)参数代表的意思

event:必须。要移除的事件名称

function:必须。指定要移除的函数。

useCapture:可选。布尔值,指定移除事件句柄的阶段。

  • true - 在捕获阶段移除事件句柄
  • false- 默认。在冒泡阶段移除事件句柄

好的,这里是一个通过 PHP 实现退出登录并防止返回的示例: 在登录界面(比如 login.php)中,我们需要设置一个 session 来记录用户是否已登录: ```php // login.php // 开启 session session_start(); // 判断是否已经登录,如果已经登录则跳转到主界面(比如 index.php) if (isset($_SESSION['username'])) { header('Location: index.php'); exit; } // 处理用户提交的表单,验证用户名和密码等 // 如果验证通过,则将用户名存入 session,然后跳转到主界面 if (/* 验证通过 */) { $_SESSION['username'] = $username; header('Location: index.php'); exit; } // 显示登录表单 // ... ``` 在主界面(比如 index.php)中,我们需要在页面顶部添加一个“退出登录”链接,用于注销当前用户: ```php // index.php // 开启 session session_start(); // 判断是否已经登录,如果登录则跳转到登录界面(比如 login.php) if (!isset($_SESSION['username'])) { header('Location: login.php'); exit; } // 处理用户点击退出登录”的请求 if (isset($_GET['action']) && $_GET['action'] == 'logout') { // 注销当前用户的 session,并跳转到登录界面 session_destroy(); header('Location: login.php'); exit; } // 显示页面内容,包括“退出登录”链接 // ... echo '<a href="index.php?action=logout">退出登录</a>'; // ... ``` 在上面的代码中,我们判断用户是否已登录,如果登录则跳转到登录界面;如果已登录,则显示页面内容,并在页面顶部添加一个“退出登录”链接。当用户点击链接,会跳转到 `index.php?action=logout` 的 URL,表示执行注销操作。在页面加载,我们判断 URL 中是否包含 `action=logout`,如果是则执行注销操作,并跳转到登录界面。 这样就能实现退出登录并防止返回了。当用户在主界面点击返回,会回到登录界面,而不会回到主界面。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值