2011-10-20 89 views
0

我有一個登錄工作快閃>> PHP >> MYSQL和能夠做我需要的一切。as3唯一登錄會話

不過,我一直在呈現一個問題,一個人可以在同一個賬號下登錄,並開始與周圍的事物搞混。這會產生更新數據的問題,因爲有人可以改變某些內容,而另一個人可能會覆蓋他們的數據或複製數據。

我已經看到了一些提到的PHP會議,但需要一些更多的信息。

我會設置一個計時器作爲登錄的,這樣在我的MySQL數據庫我有用戶|密碼|時間戳。 登錄後,時間戳調整爲Now()+ 15秒,定時器每10秒調用一次,並再次更新時間戳(+ 15s)。因此,在登錄時,如果有人嘗試登錄,則登錄時間必須>時間戳>

我認爲,這種方式如果當前登錄的用戶從閃存程序移開,登錄計時器將不再被觸發?

有什麼不同的方法我應該去做這件事?每5分鐘設置一次不活動的自動登錄?如果有人嘗試登錄,它會向所有活動的瀏覽器發送請求,以查看是否正在使用用戶名/密碼會話(我使用實例ID)?

一些代碼或我應該看看什麼樣的方向將不勝感激。

JC

+0

PHP會話類應該能夠爲你處理這個問題 –

回答

0

我建議你用你的邏輯進行(更新在某些時間間隔數據庫),有一點變化 - 不使用定時器,但在每一個用戶交互的更新。


假設您的IDLE_TIME爲10分鐘。

  • 每當用戶導航到任何部分或發生任何重大更改時,都需要更新日誌記錄時間戳。
  • 如果用戶沒有爲當時互動,他會踢出;

我在一年前實現了類似的東西,但只使用PHP。在所有文件的頂部,如果比IDLE_TIME大,我會比較最後一次交互時間戳和當前時間:踢,如果沒有,則更新。

如果大量用戶同時使用您的系統,那麼使用計時器對您的數據庫來說會有點不必要和痛苦。

+0

謝謝, 這有效,但不是試圖將它綁定到用戶進行更改的所有實例。我在背景中使用了20秒定時器,效果很好。唯一的問題是該人可能會收到一條消息,在20秒內嘗試重新登錄,以使其時間戳過期。有20-50人使用這個功能,我沒有看到服務器的負面影響。我會記住你的觀點,並且如果我注意到它對服務器/數據庫造成更多的徵稅,可能會切換它。 –