我已經爲登錄系統創建了會話表,當用戶登錄成功時,隨即生成一個會話密鑰並與登錄用戶的用戶標識關聯,並在會話表中添加了一個expirytime列,默認值是當前+一小時後的時間戳,即如果時間是17:10:32那麼在該列時間將是18:10:32。所有這些都添加到數據庫中。在登錄會話密鑰被選中,這個時間是由該命令檢查: "SELECT * FROM active_sessions where session_key = :asession and expirytime > NOW()"
驗證會話和mysql時間
我的問題是,當會話期滿的情況下(即expirytime列的時間已過期),那麼是有可能,如果有人更改他的電腦時間,然後我的上面的查詢將成爲真實的,過期的會話將被使用。
其次,無論如何,一個會話只能通過它創建的設備(爲了防止竊取cookie並在其他設備上使用它們)使用它。謝謝
NOW()使用並返回服務器時間,而不是用戶一。 – mitkosoft
所以系統時間不會影響查詢。 OK –