重定向到登录页面后跳转原页面
- 起因:
网站涉及权限问题,没有登录或者登录过期需要重新登录时服务器会302重定向到登录页面,但是有登录以后回到原页面的需求
- 实现思路:
服务器在重定向时带上参数,参数的值就是当前页面的路径,因为可能当前路径有参数,所以要对路径进行URL编码
/*PHP代码*/
if(登录失效){
//将路径+?+参数进行URL编码以后作为登录页的参数url的值
header("Location: /login.php?url=".urlencode($_SERVER['PHP_SELF']."?".$_SERVER["QUERY_STRING"]) );
}
登录页提取参数,然后URL解码,登录验证成功以后对应跳转
/*JS代码*/
/**
* 获取url中的参数值
*
* @param queryName 要获取的参数名
* @returns {string|null} 返回对应的参数值 没有找到返回null
* @constructor
*/
function GetQueryValue(queryName) { //这里函数名的首字母G不能小写,小写就找不到方法,目前不知道为什么,知道的欢迎指教
var query = decodeURI(window.location.search.substring(1));
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == queryName) {
return pair[1];
}
}
return null;
}
/*中间代码省略*/
if(登录验证成功){
let url= GetQueryValue("url"); //链接里的tourl参数
if (url != null) {
//参数有值,跳转到原网页
location.replace(decodeURIComponent(url));
} else {
//参数没值,跳转首页
location.replace("admin/index.php");
}
}