2012-08-01 244 views
3

我有一個登錄腳本作品,但,我不知道我應該如何處理額外的登錄嘗試當用戶已經登錄,登錄頁面重定向到主頁,如果發現用戶已經登錄。如何處理用戶登錄後的其他登錄嘗試?

然而,如果用戶有多個瀏覽器窗口,在登錄頁面打開,通過一次登錄,然後嘗試使用其他瀏覽器標籤用相同的登錄名或其他登錄再次登陸,我應該如何處理這兩種類型的請求?

更爲複雜的是,我有一個驗證頁面也將記錄用戶後,用戶已經使用了令牌驗證。如果用戶已經登錄,我應該如何處理這個問題?

例如,用戶A和用戶B都註冊並且都通過電子郵件接收令牌。他們都在同一臺PC上,同一臺瀏覽器上,同一個會話上。用戶A驗證令牌,然後成功登錄。用戶B,然後驗證令牌然後登錄...?等待用戶A已經登錄!我應該如何處理用戶A?

這裏最好的做法是什麼?

+1

使用** session **或** cookie ** ..請發佈您的登錄代碼,以便我可以幫助您更好地 – 2012-08-01 09:02:32

+0

@BhuvanRikka嗨,感謝您的評論,但是我不需要在我的代碼中修復,我只需要知道在同一個會話上進行額外的登錄嘗試需要達到什麼樣的行爲。代碼只會使問題比問題更復雜。 – chaser 2012-08-01 09:29:43

+0

我發佈的代碼是純javascript。所以它很複雜。使用php,你可以更容易。不同的框架有不同的創建會話的方式 – 2012-08-01 09:36:52

回答

1

,與 一個登錄,然後嘗試使用其它再次登錄瀏覽器選項卡,我應該如何處理這個請求 ?

當然,登錄會話將被設置,並且不需要再次驗證是否它是有效登錄?

通常有3種方法來處理額外的登錄:

  1. 忽略它,讓人們在不同地點登錄的同時

  2. 踢第一屆出來的時候,第二屆日誌這通常不是最好的解決方案,但它解決了人們關閉瀏覽器的問題(即沒有正確註銷),然後嘗試在新會話中重新登錄並被告知不能。

  3. 給予用戶一個錯誤,說他們在別處登錄。如果這樣做,請確保活動登錄有一個時間限制,這樣如果有人確實忘記在某處註銷,或者他們的瀏覽器意外關閉,那麼他們仍然能夠重新登錄 - 他們只需等待一段時間時間。

就我個人而言,除非有異常情況,否則我會選擇第二種選擇。

+0

嗨,我已經更新了這個問題,以擴大此。如果登錄不一樣,那又是什麼登錄?我還會殺了第一場? 成功登錄後,我應該確保$ _SESSION爲空嗎? – chaser 2012-08-01 09:22:27

+0

在這種情況下,如果某人已經登錄,然後嘗試重新登錄或嘗試驗證令牌,我只會發出一個錯誤。如果他們想要登錄/驗證另一個帳戶,請輸入一個錯誤,告訴他們註銷當前帳戶。 – Nick 2012-08-01 09:29:27

+0

呼叫良好。讓用戶對他們的行爲負責。謝謝,我會將此標記爲已回答。 – chaser 2012-08-01 09:36:21

1

就個人而言,當某人進行雙重登錄時,無論如何,先登錄的人都會被註銷。

爲什麼?

Bascyly因爲如果有人忘記註銷並離開他的電腦。返回到另一臺電腦,並嘗試登錄,無法登錄,他真的非常非常反感。

當用戶登錄在他登錄,登錄在該計算機上或在另一臺計算機上的同一個帳戶的所有其他用戶獲取註銷。允許用戶始終登錄到他或她的帳戶。

你也可以忽略這一點。如果這不會在您的應用程序中造成問題,您可以讓某人同時在多個地方使用一個帳戶登錄。但我們無法爲你確定。

至於兩個不同的用戶嘗試登錄在同一個瀏覽器,我永遠不會讓這種事情發生,它也不可能在我的應用程序,因爲我使用cookie這一點。

+0

看來人們誤解了我的問題。也許我應該更好地重述它來幫助其他人提出類似的問題。這不是單獨的瀏覽器/會話/位置。同一會話/位置/瀏覽器。只有兩個用戶使用同一個會話競爭登錄。或者實際上有一個用戶擁有兩個賬戶。 – chaser 2012-08-01 10:00:44

1

使用Cookie:

在登錄頁面:

<script type="text/javascript"> 
if(document.cookie.split(";")[0].split("=")[0] != "")//the login page checks for cookies every time it loads.if the password and id are saved,it'll redirects to homepage without showing login page 
     { 
     window.location.href = "welcome.html"; 
     } 

if(condition)//condition when username and password are valid 
      { 
       var uname=document.getElementById("zname").value; 
       var pswd=document.getElementById("zpswd").value; 
       if(document.getElementById("chkbx").checked) //Remember me checkbox (stores username and password until "logout" is clicked in homepage) 
       { 
        document.cookie=uname+"="+pswd; 
        alert("You will be automtically logged in when you visit this page again" +uname); 
       } 



       window.location.href="welcome.html"; 
      } 
</script> 

在主頁:

<script type="text/javascript"> 
function del_cookie(name) 
      { 
     document.cookie = name + '=; expires=Thu, 01 Jan 1970 00:00:01 GMT;'; 
    } 
    function signOut() 
      { 
     del_cookie(document.cookie.split(";")[0].split("=")[0]); 
     window.location.href ="login_page.html" 
    } 
</script> 

所以,每次加載時間登錄頁面檢查餅乾。如果密碼和ID被保存,它會重定向到網頁上沒有顯示,如果用戶有多個瀏覽器標籤在登錄頁面打開登錄頁面

+0

對此+1,因爲雖然它不是我要找的,但它是有用的,我將在cookie參與混合時使用它(記住我) – chaser 2012-08-01 09:40:30

+0

@chrolli sure buddy;)。它肯定會有幫助,因爲使用php無法實現所有功能。你必須堅持基本的時間 – 2012-08-01 09:45:10

相關問題