2012-02-11 46 views
0

我在本地wamp服務器中有兩個php應用程序。兩個應用程序都使用相同的機制通過在會話中存儲登錄來檢查身份驗證。我的問題是如果我成功登錄一個應用程序,其他應用程序登錄自動,如果我打開在同一瀏覽器。這兩個應用程序登錄驗證使用相同的PHP代碼(我從一個應用程序複製到另一個)。使用會話在PHP中進行身份驗證

我關心的是兩個應用程序如何在wamp服務器中共享同一個會話?我做錯了什麼?

在此先感謝。

+0

他們是在同一個域? – Grexis 2012-02-11 10:12:20

+0

該問題需要澄清。在一個應用程序上登錄意味着你登錄到另一個應用程序(並且不想成爲)或者你想在另一個應用程序上登錄但不是? – 2012-02-11 10:15:35

+0

@Grexis是的應用程序在同一個域。我本地的wamp服務器,所以他們去。 app1是http:// localhost/App1,另一個是http:// localhost/App2 – Rifky 2012-02-11 10:18:41

回答

1

這些應用程序可能運行在相同的域上,例如, http://localhost/app1http://localhost/app2。默認情況下,PHP的會話cookie對整個域有效,所以兩個應用程序自然都共享會話cookie。這裏是你可以做什麼:

1

會話使用cookie(默認情況下稱爲PHPSESSID)將會話密鑰存儲在瀏覽器中。

由於您的應用程序都位於相同的localhost域中,因此您的瀏覽器正在向兩個應用程序發送相同的會話ID。

1

更可能的是,這是由localhost域服務的應用程序(可能是相同的cookie名稱)引起的。由於應用程序具有相同的身份驗證後端,因此它們的行爲方式是相同的。

儘管這可能不會是在生產環境上隔離域的問題,考慮增加一個唯一的身份驗證令牌正在考慮用戶的登錄驗證過的每個應用程序。

另一個臨時本地解決方案將是使用您的主機文件來模擬開發環境中的單獨域。

+0

請解釋添加一個唯一的身份驗證令牌。 – Rifky 2012-02-11 10:38:00

+1

也許當你的應用加載時,你將一個常量設置爲一個唯一的字符串,比如md5(「我穿着我爸爸的髒襪子」);當用戶成功登錄時,將該字符串添加到身份驗證cookie。在檢查用戶是否登錄時,將應用程序中的字符串與cookie中的字符串進行比較,以確保其匹配。 – 2012-02-11 10:53:02

0

會話密鑰存儲在瀏覽器的Cookie中。瀏覽器爲給定的域存儲Cookie。所以我認爲你的兩個應用程序在同一個域上運行(localhost?)。如果是這樣,你必須將它們分開才能使其工作。

您也可以通過在應用程序中的一個使用session_save_path() function存儲在不同的地方不同的會話文件

相關問題