成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

JS+PHP實(shí)現(xiàn)登錄后自動(dòng)執(zhí)行之前的操作

iamyoung001 / 2007人閱讀

摘要:執(zhí)行操作前判斷用戶的登錄狀態(tài),是則執(zhí)行操作,否則先跳轉(zhuǎn)到登錄頁(yè)面,登錄成功后返回頁(yè)面,頁(yè)面繼續(xù)執(zhí)行之前的操作。進(jìn)入登錄頁(yè)時(shí)獲得的必須要記錄下來,才能在登錄成功后跳轉(zhuǎn)回之前的頁(yè)面。最后決定選擇保存要執(zhí)行的方法。

問題

用戶進(jìn)入頁(yè)面A,在頁(yè)面A上要執(zhí)行一個(gè)操作X。操作X需要用戶登錄后才能訪問,因此系統(tǒng)引導(dǎo)用戶到登錄頁(yè),用戶登錄后在讓用戶繼續(xù)執(zhí)行操作X。

分析

操作X存在兩種情況,1:跳轉(zhuǎn)到一個(gè)頁(yè)面B;2:執(zhí)行一個(gè)操作。

進(jìn)入頁(yè)面B的情況,要在頁(yè)面B的入口位置判斷是否用戶是否為登錄狀態(tài),是則進(jìn)入,否則進(jìn)入登錄頁(yè)面,登錄成功后再進(jìn)入頁(yè)面B。假設(shè)頁(yè)面A的URL是是url-a,頁(yè)面B的url是url-b,登錄頁(yè)面的url是url-l,那么瀏覽器的地址依次是url-a,url-b,url-l,url-b。因此,系統(tǒng)就是要解決登錄模版如何記錄url-b,并在成功后進(jìn)入url-b。

執(zhí)行一個(gè)操作的情況。執(zhí)行操作前判斷用戶的登錄狀態(tài),是則執(zhí)行操作,否則先跳轉(zhuǎn)到登錄頁(yè)面,登錄成功后返回頁(yè)面A,頁(yè)面A繼續(xù)執(zhí)行之前的操作。這時(shí),登錄頁(yè)要記錄頁(yè)面A,登錄成功后返回A,頁(yè)面A要記錄用戶的操作和參數(shù),從登錄頁(yè)返回后繼續(xù)執(zhí)行。

實(shí)現(xiàn) 頁(yè)面跳轉(zhuǎn)

頁(yè)面跳轉(zhuǎn)的情況,由頁(yè)面B負(fù)責(zé)判斷是否要跳轉(zhuǎn)到登錄頁(yè),如果需要用redirect的方式完成。

header("Location: $loginURL");
exit;

在login頁(yè)面需要知道是從哪個(gè)頁(yè)面跳轉(zhuǎn)來,并保存,這樣登錄成功后再跳轉(zhuǎn)回原來的頁(yè)面。PHP中可以通過$_SERVER["HTTP_REFERER"]獲得是從哪個(gè)頁(yè)面進(jìn)入的的登錄頁(yè)。

$referer = $_SERVER["HTTP_REFERER"];

進(jìn)入登錄頁(yè)時(shí)獲得的$referer必須要記錄下來,才能在登錄成功后跳轉(zhuǎn)回之前的頁(yè)面??缯{(diào)用保存信息有4種方式:1、保存在session中;2、保存在cookie中;3、作為參數(shù)放在url中;4、生成頁(yè)面時(shí),作為頁(yè)面的隱藏信息。

放在session中,只能通過php獲取,因此,登錄成功后跳轉(zhuǎn)回原頁(yè)面的操作只能在php中進(jìn)行,這樣就不能實(shí)現(xiàn)通過一個(gè)ajax調(diào)用驗(yàn)證用戶登錄信息后,在前端頁(yè)面直接跳轉(zhuǎn)指定頁(yè)面。

采用cookie的方式需要前后端共同確定一個(gè)約定,用什么代表頁(yè)面的跳轉(zhuǎn)信息,另外前端需要增加cookie的處理邏輯。這種方式可以同時(shí)支持前端或后端進(jìn)行跳轉(zhuǎn)。

作為參數(shù)放在url中可以實(shí)現(xiàn)在前端進(jìn)行跳轉(zhuǎn),但是會(huì)導(dǎo)致url看起來有些怪異,同時(shí)還需要考慮url編碼的問題。

直接生成在登錄頁(yè)面中(利用頁(yè)面模版)作為前端參數(shù),這種方式支持在前端進(jìn)行跳轉(zhuǎn),需要前后端約定參數(shù)的定義。

執(zhí)行操作

執(zhí)行操作的情況應(yīng)該是頁(yè)面A判斷用戶是否已經(jīng)登錄,或者根據(jù)執(zhí)行操作X的返回結(jié)果,由頁(yè)面A直接跳轉(zhuǎn)到登錄頁(yè)面,登錄界面記錄是從哪個(gè)頁(yè)面跳轉(zhuǎn)來的。

header("Location: $loginURL");
exit;

頁(yè)面A執(zhí)行跳轉(zhuǎn)到登錄頁(yè)面前,首先記錄要執(zhí)行的操作,例如:操作的名稱,這個(gè)信息必須可以跨請(qǐng)求訪問。操作的相關(guān)信息可以通過url、session、cookie傳遞,或者通過localStorage、sessionStorage保留在客戶端。

如果用url指定要執(zhí)行的操作(用history.pushState替換url),只能攜帶簡(jiǎn)單的參數(shù)(放在history中是個(gè)好方法?沒想明白),通用性不好。session和cookie需要向服務(wù)器端傳數(shù)據(jù),而且獲取保留的參數(shù)并不方便。最后決定選擇sessionStorage保存要執(zhí)行的方法。

跳轉(zhuǎn)到登錄界面前保存要執(zhí)行的操作:

if (window.sessionStorage) {
    var method = JSON.stringify({
        name: "要執(zhí)行的方法的名稱",
        args: [參數(shù)1,參數(shù)2]
    });
    window.sessionStorage.setItem("pending.method", method);
}

從登錄界面跳轉(zhuǎn)回頁(yè)面,取出要執(zhí)行的操作并執(zhí)行:

if (window.sessionStorage) {
    var pendingMethod;
    if (pendingMethod = window.sessionStorage.getItem("pending.method")) {
        window.sessionStorage.removeItem("pending.method");
        pendingMethod = JSON.parse(pendingMethod);
        window[pendingMethod.name].apply($scope, pendingMethod.args || []);
    }
}

總結(jié),采用的方式是通過HTTP_REFERER和cookie記錄登錄后要跳轉(zhuǎn)的頁(yè)面,通過sessionStorage記錄返回頁(yè)面后要執(zhí)行的javascript方法和參數(shù)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/22100.html

相關(guān)文章

  • JS+PHP實(shí)現(xiàn)登錄自動(dòng)執(zhí)行之前操作

    摘要:執(zhí)行操作前判斷用戶的登錄狀態(tài),是則執(zhí)行操作,否則先跳轉(zhuǎn)到登錄頁(yè)面,登錄成功后返回頁(yè)面,頁(yè)面繼續(xù)執(zhí)行之前的操作。進(jìn)入登錄頁(yè)時(shí)獲得的必須要記錄下來,才能在登錄成功后跳轉(zhuǎn)回之前的頁(yè)面。最后決定選擇保存要執(zhí)行的方法。 問題 用戶進(jìn)入頁(yè)面A,在頁(yè)面A上要執(zhí)行一個(gè)操作X。操作X需要用戶登錄后才能訪問,因此系統(tǒng)引導(dǎo)用戶到登錄頁(yè),用戶登錄后在讓用戶繼續(xù)執(zhí)行操作X。 分析 操作X存在兩種情況,1:跳轉(zhuǎn)到...

    Eirunye 評(píng)論0 收藏0
  • JS+PHP實(shí)現(xiàn)登錄自動(dòng)執(zhí)行之前操作

    摘要:執(zhí)行操作前判斷用戶的登錄狀態(tài),是則執(zhí)行操作,否則先跳轉(zhuǎn)到登錄頁(yè)面,登錄成功后返回頁(yè)面,頁(yè)面繼續(xù)執(zhí)行之前的操作。進(jìn)入登錄頁(yè)時(shí)獲得的必須要記錄下來,才能在登錄成功后跳轉(zhuǎn)回之前的頁(yè)面。最后決定選擇保存要執(zhí)行的方法。 問題 用戶進(jìn)入頁(yè)面A,在頁(yè)面A上要執(zhí)行一個(gè)操作X。操作X需要用戶登錄后才能訪問,因此系統(tǒng)引導(dǎo)用戶到登錄頁(yè),用戶登錄后在讓用戶繼續(xù)執(zhí)行操作X。 分析 操作X存在兩種情況,1:跳轉(zhuǎn)到...

    EasonTyler 評(píng)論0 收藏0
  • PHP基于laravel框架獲取微博數(shù)據(jù)之一 模擬新浪微博登錄

    摘要:模擬登錄新浪微博的核心,也是與模擬登錄最大的不同,密碼加密。已經(jīng)實(shí)現(xiàn)模擬新浪微博登錄的功能,之后不再更新。 參考資料: http://www.csuldw.com/2016/11/10/2016-11-10-simulate-sina-login/ http://blog.csdn.net/fly_leopard/article/details/51148904 http://www....

    galois 評(píng)論0 收藏0
  • Laravel 上手教程之實(shí)現(xiàn)用戶注冊(cè)和登錄

    摘要:在文件的標(biāo)簽中加上以下代碼新手上路注冊(cè)登陸上面只是引用了一些簡(jiǎn)單的的,也沒什么難的,不用傷心。 Laravel身為最優(yōu)雅的PHP框架,很多學(xué)習(xí)PHP的小伙伴造就對(duì)Laravel垂涎欲滴。今天就來實(shí)現(xiàn)你的愿望,讓我們一起從零開始,利用Laravel實(shí)現(xiàn)Web應(yīng)用最常見的注冊(cè)和登錄功能!所有的課程源碼已放在Github上:laravel-start. Race Start ! 首先我們來...

    stormgens 評(píng)論0 收藏0
  • Vue-book 2.0 一個(gè)移動(dòng)端簡(jiǎn)單全棧 web APP

    摘要:本項(xiàng)目是一個(gè)簡(jiǎn)單的全棧項(xiàng)目,前端新手可以拿來練練手。項(xiàng)目實(shí)現(xiàn)了一些簡(jiǎn)單的功能,后臺(tái)可以對(duì)圖書進(jìn)行錄入錄出掃碼或手動(dòng),前臺(tái)顯示錄入的圖書,并且前臺(tái)注冊(cè)登錄后可以將書的訂單發(fā)給服務(wù)器,并存到服務(wù)器。 Vue-book 2.0 Github 地址:https://github.com/percy507/v... 【覺得不錯(cuò)就來個(gè) star 吧 ^_^】 說明(菜鳥請(qǐng)進(jìn),大神繞道 ~) 前端...

    NotFound 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<