2012-06-10 43 views
0

我正在製作基於php的應用程序。當兩個用戶使用不同的選項卡從同一瀏覽器登錄時,他們可以訪問其他頁面。如何防止這一點?在同一瀏覽器中限制用戶訪問

+0

爲什麼?除了讓用戶輸入每個請求的用戶名/密碼外,我不知道這是可能的,更不實用。 –

+0

標題中的「限制用戶訪問」 - 有問題的「可以訪問」??? – slash197

+0

你真的*需要做的是確保你不會允許瀏覽器登錄兩個不同的用戶。這通常是web應用程序在這方面的工作方式。 IE,如果用戶試圖訪問登錄屏幕或表單,請首先註銷,或者如果請求登錄頁面或表單,則自動登出其他用戶。 –

回答

0

我看到有4個解決方法:

  1. 你可能只是試着給那個窗口(在這種情況下,標籤)的名稱來檢測一個特殊的窗口使用JavaScript:

    if(window.name==4711) {...} 
    
  2. 使用一個帶GET參數的會話,不帶cookie。

  3. 使用一個隨機的子域與正常的cookie在該子域上操作。

  4. 使用一個普通的cookie,它僅限於一個「虛擬」目錄,這個目錄對mod_rewrite的使用並不存在。 Idea based on this comment

+0

這是如何防止某人選擇其他選項卡? –

+0

我明白這個問題就是這樣一個解決方案被搜索到在一個多帳戶瀏覽器中登錄。這是基於cookie的會話不可能的。 – rekire

+0

@JaredFarrish:這個概念使得整個問題都沒有意義。我想知道爲什麼這是OP認爲他需要解決的問題。 –

0

使用$_SESSION$_COOKIE存儲當在用戶登錄,因此,當用戶更改頁面,您根據生成的密鑰訪問他們的信息更新數據庫時創建的生成的密鑰。你也需要可能要創建一個簡單的function,檢查的密鑰和使用其他功能,爲您的網頁,如果它就像一個菜單欄或登錄框,把它包裝的if statement

if(checkUser($_COOKIE['MYSID'])){ 
    // User is logged in so show whatever 
} else { 
    // Login box here 
} 
+2

Cookie不綁定到標籤或窗口,AFAIK。仍然不會阻止某人僅僅點擊其他標籤*。 –

+0

您是對的,Cookies不是基於一個標籤或窗口,但是如果您使用Cookies作爲登錄源並在網站中添加了一個用於檢查Cookie是否存在的部分,從而不允許其他人登錄確實阻止了他所要求的。 – Bobby

+0

缺點是,顯然/可能?,OP建立了一個系統,以某種方式允許多個用戶在同一個瀏覽器會話中登錄。修復這個問題,不要針對甚至不應該發生的問題實施一些複雜的「修復」。 IMO。 –

0

使用window.name物業內或通過打開瀏覽器選項卡的時間爲每個用戶設置Cookie。

0

,所以你要做的 第一,當用戶輸入憑證和記錄在設置會話變量

$_SESSION['logged_in'] = "true"; 

什麼,那麼你必須做出一些修改你的應用程序沒有檢查,如果用戶當前已登錄或不到您的索引頁面,頁面如下

<? 
if($_SESSION['logged_in']=='true'){ 
header('location:USERS_SPECIFIC_PAGE_AFTER_LOGIN.EXT') 
} 
else{ 
header('location:login_page.ext'); 
} 

?>