2011-06-01 60 views
2

這裏是我的客戶要求是:PHP Cookie管理

1>有一個共同的網頁,讓每個客戶登錄。成功登錄後,會創建一個cookie,並將客戶重定向到「等待區域」頁面。我需要創建一個可持續10秒的cookie,並持續刷新時間,直到客戶關閉窗口。

2>管理頁面會列出所有尚未關閉「等待區域」頁面並等待管理員前進的客戶。

由於我是會議和cookie管理的新手,我不確定在這裏需要做什麼,即使用session_startsetcookie?由於管理員需要等待所有客戶的列表,我想所有這些條目都需要放在數據庫表中?每當客戶關閉該頁面時,該條目應從數據庫中刪除。

我的理解是否正確?如果有人有更好的建議,請讓我知道。

回答

1

我建議使用session_start功能,並將與其會話ID關聯的用戶保留在數據庫中。在會話表中,您可以跟蹤創建的時間戳,並可以使用單個查詢輕鬆檢查哪些用戶正在等待。

如果您只基於cookie實施它,您不會知道是誰等待,因爲此信息僅基於客戶端。

+0

但是當用戶關閉窗口,如何從數據庫中刪除記錄以便管理員不會看到記錄? – 2011-06-01 21:29:37

+0

您可以使用JavaScript鉤入窗口關閉事件,但我寧願手動設置一個超時值,以確定用戶是否仍在等待(例如10分鐘) – grundprinzip 2011-06-01 21:33:52

0

你的要求很奇怪,我不明白爲什麼用戶會在「等待區」頁面上「等待」。我會重新思考10秒。 cookie部分。

對於數據持久性,我建議您使用sessions,因爲它們很容易集成到該類型的上下文中。

+0

那麼它是一個遊戲網站。所以你要等到管理員找到適合你的匹配。我們不需要考慮管理員花費多少時間來找到一個。我們關心的是記錄用戶等待管理員 – 2011-06-01 21:10:07

+0

我明白了,是的。 grundprinzip和RRStoyanov有相當不錯的解決方案,如果你結合了2個答案。你不會有一個刷新的cookie,雖然這是不可能的,我認爲沒有重新加載頁面。 – stefgosselin 2011-06-01 21:19:35

1

如果您使其與數據庫相關,這意味着您需要每秒更新一次表格。如果你決定採用這種方式,你可以創建一個簡單的表格來保存會話ID,end_time。

爲了避免分貝每秒連接,我建議當管理員點擊上讓我們說在該腳本的頂部viewSessions.php有一個查詢其刪除應該將其刪除所有會話 - DELETE FROM my_sessions WHERE end_time<=(DATE_SUB(now(), INTERVAL 10 SECOND));

+0

我沒有得到你。我仍然需要刷新數據庫中的end_time?如果我現在創建了一個小時的過期時間並關閉窗口,該記錄仍在數據庫中。管理員只應查看尚未關閉「等待區域」頁面的記錄 – 2011-06-01 21:31:22