我正在開發一個項目,該項目的要求是一次只能從一臺機器訪問登錄信息。機器限制登錄訪問
例如,如果我授權您訪問我的網站並從您的家用機器登錄,則系統會將此設置存儲在Cookie /數據庫中。現在,如果您在工作機器或任何其他機器上嘗試使用相同的登錄信息,系統將不會讓您登錄系統。登錄現在只能在家用機器上運行。
關於如何實現這一點的任何建議將會有所幫助。任何資源,你可以指向我也將不勝感激。
我正在開發一個項目,該項目的要求是一次只能從一臺機器訪問登錄信息。機器限制登錄訪問
例如,如果我授權您訪問我的網站並從您的家用機器登錄,則系統會將此設置存儲在Cookie /數據庫中。現在,如果您在工作機器或任何其他機器上嘗試使用相同的登錄信息,系統將不會讓您登錄系統。登錄現在只能在家用機器上運行。
關於如何實現這一點的任何建議將會有所幫助。任何資源,你可以指向我也將不勝感激。
在用戶表中有一個名爲「logintime」的額外日期列。
如果用戶發送用戶名/密碼,並且沒有該用戶的「登錄時間」,則在檢查密碼後允許登錄並將時間寫入「登錄時間」。
如果「logintime」已設置,則不允許登錄。
當它變成舊的時候刷新「logintime」(在你的例子中是2個月)。
感謝您的幫助Zaf。我做了類似的事情。 我在數據庫中插入了一個新列,並在成功登錄時檢查了一個標記,並在用戶計算機上留下了一個cookie,將該計算機標記爲已驗證的計算機。 cron作業,在cookie過期的同時取消選中標誌(從cookie安裝時起2個月) – 2010-04-06 03:32:12
嗯,這對PHP的會話來說非常簡單。
使用會話處理器存儲會話數據庫中的數據格式如:
Session_ID | User_ID | Session_Data | Timestamp
然後,您登錄的人之前,刪除所有的會話與該用戶ID
哎呀,我讀錯了你的問題。如果您不想允許第二次登錄,請檢查具有該User_ID的會話是否已經存在且尚未過期。
如果您希望第二次登錄登錄第一次登錄,則刪除部分可以工作。這通常是採取的方法,因爲那時沒有人必須記得退出。如果您在其他地方登錄,它只會登出您最近登錄的地方。
見PHP的session_set_save_handler()
http://us.php.net/manual/en/function.session-set-save-handler.php
您好Chacha102,感謝您的回覆。我會試試這個。 我想要做的是1)用戶首次登錄 - >在用戶登錄的計算機上設置cookie/session,允許用戶登錄並瀏覽網站。標誌是記錄在數據庫中以通知系統該特定用戶已登錄。該cookie在2個月後被刪除2)如果用戶然後嘗試從不同的計算機登錄,則系統將檢測到(來自該標誌)用戶已登錄在已經和不會允許該人登錄。 – 2010-04-05 08:37:15
嗯,我不知道,我跟着你想要什麼,但它聽起來像是一旦有人在任何地點登錄,這應該是唯一的在未來登錄的位置?如果這是你想要做的事情,那麼最終你可能會遇到一些沒有靜態IP地址的人遇到的麻煩。他們可能在同一臺計算機上,但是如果他們的IP地址發生了變化,他們將無法登錄。
但無論如何,只需在用戶表中有一個IP地址字段,空值。當有人試圖登錄時,檢查他們的用戶名字段是否爲空。如果是,請將其登錄並將其設置爲其IP地址(PHP變量$_SERVER['REMOTE_ADDR']
)。如果它已經設置了地址,請檢查他們嘗試登錄的IP是否與存儲在那裏的IP相同。如果不是,即使用戶名/密碼正確,也拒絕登錄。
嗨乍得,感謝reply.I我不是要綁定用戶登錄到IP地址。我想要做的是1)用戶首次登錄 - >在用戶登錄的計算機上設置cookie,並允許用戶登錄並瀏覽網站。標誌記錄在數據庫以通知系統該特定用戶已登錄。該cookie在2個月後被刪除2)如果用戶然後嘗試從不同的計算機登錄,則系統將檢測到(來自該標誌)用戶已經登錄並且將不允許該人登錄。 – 2010-04-05 08:35:25
登錄後用戶必須連接到某臺計算機多長時間?或者這是永久的?什麼阻止我在USB驅動器上使用迷你操作系統並登錄到任何我想要的地方?如果你必須允許來自NAT後面的人,我不太確定這是否成立。即使不是...... – 2010-04-05 05:39:06
登錄詳細信息在其設置的時間限制內在cookie中保持活動狀態。使用迷你操作系統是不允許的。登錄僅適用於一臺機器的一個用戶。感謝您的回覆 – 2010-04-05 08:38:56