PHP如何实现用户登录成功后禁止点击浏览器返回按钮退回登录页
解决登录后无法通过Chrome返回键退回到登录页的方案
第一步:给登录页(login.php)加登录状态拦截逻辑
直接在login.php的最顶部插入以下代码,只要已登录的管理员用户访问登录页,就会直接跳转到后台首页,不会加载登录页面内容:
<?php if(!isset($_SESSION)) { session_start(); } // 已登录的管理员用户直接跳转后台,无需访问登录页 if(isset($_SESSION['usertype']) && $_SESSION['usertype'] == "admin"){ // 此处替换为你实际的后台首页地址 header("location: dashboard.php"); exit(); } ?>
第二步:给登录页设置禁止缓存的响应头
Chrome默认会缓存已访问过的页面,点击返回键时可能直接读取本地缓存跳过后端校验,所以需要在login.php的session_start()后添加以下响应头,强制浏览器每次访问登录页都要请求服务器:
// 禁用登录页缓存 header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache");
可选前端优化方案
如果想要直接清除历史记录里的登录页条目,可以在登录成功后跳转的后台页面头部插入以下JS代码,直接替换历史记录里的登录页地址,从根源上避免返回跳转:
if (window.history.replaceState) { window.history.replaceState(null, null, window.location.href); }
内容的提问来源于stack exchange,提问作者Janbres Gagaracruz
相关产品推荐
相关产品推荐

