2010-06-02 106 views
1

我想使管理員能夠以後臺用戶的身份登錄。現在我正在使用兩個會話(名稱不同的會話),一個用於管理員,另一個用於前端。從同一個文件(PHP)中寫入兩個會話

是否可以在第一個會話中寫入,關閉它然後打開一個新的會話?

這是什麼,我嘗試但失敗了的簡化版本:

session_name('admin_session'); 
session_start(); 
// use first session without generatring any output 
session_close(); 

session_name('frontend_session'); 
session_start(); 
// use the second session 

感謝。

+1

我認爲你誤解了會話的實際內容。會話會唯一標識打開您的網站的瀏覽器。我不明白你爲什麼需要再次確認這一點。你應該把你的管理權限放在另一個地方。 – 2010-06-02 22:56:46

+0

這是網站編程的方式,我無能爲力。 fontend檢查一個會話中的權限(由其名稱標識),後端檢查不同會話中的權限。爲此,我需要訪問這兩個會話。 – b2238488 2010-06-02 22:58:34

+0

那麼你使用'session_destroy()'或'session_write_close()'?因爲'session_close()'不存在。我也對如何檢查兩個「不同」會話感到困惑,我的印象是PHP只能在瀏覽器中爲每個域存儲一個名爲PHPSESSID的cookie。 – 2010-06-02 23:01:48

回答

2

我已經爲管理員提供了過去切換到「用戶」的功能。

我通過序列化管理用戶的$ _SESSION,然後將該字符串存儲爲$ _SESSION ['adminData'],然後覆蓋所有其他會話變量與他登錄的用戶的會話變量並重定向到主頁。主頁上唯一不同的功能是對$ _SESSION ['adminData']進行if測試,該測試提供了「恢復爲管理」鏈接...但是出於所有意圖和目的,管理員現在以該用戶身份登錄。 單擊「還原爲管理員」鏈接時,代碼邏輯簡單地反序列化$ _SESSION ['adminData']。

相關問題