机器限制登录访问

时间:2010-04-05 05:27:06

标签: php mysql cookies

我正在开发一个项目,该项目要求登录详细信息一次只能从一台计算机上访问。

例如,如果我授予您访问我的网站的权限,并且您从家庭计算机登录,则系统会将此设置存储在cookie /数据库中。现在,如果您在工作机器或任何其他计算机上尝试相同的登录详细信息,系统将不允许您登录系统。登录现在只能在家用机器上运行。

有关如何实现这一目标的任何建议都会有所帮助。您可以指出我的任何资源也将受到赞赏。

3 个答案:

答案 0 :(得分:0)

嗯,这对于PHP的Sessions来说相当简单。

使用会话处理程序以如下格式将会话数据存储在数据库中:

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

答案 1 :(得分:0)

嗯,我不确定我是否正在按照你想要的方式,但听起来好像有人在任何地方登录,这应该是将来登录的唯一地点?如果您正在尝试这样做,那么最终可能会遇到没有静态IP地址的人遇到麻烦。它们可以在同一台计算机上,但如果它们的IP地址发生了变化,它们将无法登录。

但无论如何,你可以在用户表中有一个IP地址字段,从它开始为NULL。当有人尝试登录时,请检查其用户名的字段是否为空。如果是,请将其登录,并将其设置为其IP地址(PHP变量$_SERVER['REMOTE_ADDR'])。如果已经设置了地址,请检查他们尝试登录的IP是否与存储在那里的IP相同。如果不是,即使用户名/密码正确,也拒绝登录。

答案 2 :(得分:0)

在用户表中有一个名为“logintime”的额外日期列。

如果用户发送用户名/密码且该用户没有“登录时间”,则在检查密码后允许登录并立即将时间写入“登录时间”。

如果已经设置了“logintime”,则禁止登录。

刷新“登录时间”(在您的示例中为2个月)。