重定向到登入頁面後跳轉原頁面

暄妍丶發表於2020-12-17

重定向到登入頁面後跳轉原頁面

  • 起因:

網站涉及許可權問題,沒有登入或者登入過期需要重新登入時伺服器會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");
	}
}

相關文章