2010-09-22 66 views
1

我的一個Web應用程序當前缺少的功能是,一次只能在一臺計算機上登錄一個用戶。也就是說,如果用戶在其他地方登錄,則他的上一個會話將被註銷。允許多個同時登錄到同一帳戶的用戶數據庫結構

這是因爲有我的當前用戶表中的列:

user: id, username, hash, salt... cursession 

時,會話ID被放入「cursession」字段和每個頁面加載,每個用戶登錄時對檢查數據庫。因此,一次只能有一個「會話」處於活動狀態。

  1. 當前表結構和方法是否安全和標準?這個系統非常簡單,我沒有專業經驗。
  2. 什麼將允許多個同時登錄?我只是想用更多的userid-cursession關係添加一個「sessions」表,但是做這個的標準方法是什麼?

回答

1

我建議您將當前登錄的用戶標識放在用戶的會話中(作爲會話變量),並從表中刪除cursession字段。您不需要重新創建會話處理,因爲PHP已經內置了它。

這樣用戶可以一次登錄多臺計算機。會話變量也是安全的,因爲它們不被瀏覽器操縱。瀏覽器中唯一保存的是標識當前會話的會話標識,所有其他數據都存儲在服務器端。如果用戶更改他的瀏覽器cookie,唯一會發生的事情是他將被註銷(開始一個空會話),因此他不能強迫自己以其他人身份登錄。

+0

對不起,但我不清楚這一點。你的意思是簡單地將用戶標識存儲在會話cookie中嗎?如果是這樣,你如何確保cookie是真的?編輯:沒關係,我知道了。只需使用$ _SESSION ['userid'] = x – phsource 2010-09-22 18:07:27

相關問題