是否有可能在一個php應用程序的多個打開窗口中激活相同的會話?在所有打開的窗口中都有相同的sessionid?
我想擁有一些可怕的「記住我」複選框類型系統的便利性,而不會對用戶數據造成同樣的風險。
我碰到的具體用例是這樣的:當用戶收到一個「好友請求」時,一封電子郵件會被髮送給他們,並在鏈接中包含一個隨機哈希和他們的用戶名。假設該人已經在一個窗口登錄了我的服務,並且正在查看他們的郵件,以便在另一個窗口中查看確認電子郵件。他們點擊確認電子郵件中的鏈接,並啓動第三個窗口,向相關確認頁面發起GET請求。我想這樣做,如果用戶已經登錄到另一個窗口的服務,並且哈希和用戶名與存儲在我的數據庫的「請求」表中的用戶相匹配,點擊鏈接即可確認該朋友。但是,如果他們尚未在另一個窗口中登錄,則他們將被強制登錄以確認好友請求。
當前,如果某人在另一個窗口中登錄,則單擊該鏈接將啓動第三個窗口,並且該人員必須再次登錄,而不管他們是否有另一個打開的會話。
如果不使用cookie來保持持久登錄,可以使用此功能嗎?
更新:這個問題表明自己缺乏有關會議是如何工作的認識。默認情況下,用戶的會話通常在同時打開的瀏覽器窗口中保留。這個問題,正如在我接受的答案中提到的那樣,我打開了一個窗口,其中www.example.com是URL,另一個窗口是example.com作爲URL,在這種情況下,第二個窗口中創建了不同的會話而不是繼續在第一個窗口中開始的會話。
僅僅使用https和安全cookies會更簡單嗎? – 2012-02-15 18:14:28
你現在的行爲有點偏離。在所有瀏覽器窗口之間已經有一個會話共享,因爲只有一個cookie擁有您的域和路徑的會話ID。 – 2012-02-15 18:14:43
不是沒有cookie。至少你需要在一個地方共享會話ID。因爲它適用於所有瀏覽器選項卡/窗口,所以cookie聽起來非常合適。替代會話ID查詢信息參數被編碼到URL中,並且比Cookie更安全。 – hakre 2012-02-15 18:15:13