2010-04-05 77 views
0

我正在开发一个项目,该项目的要求是一次只能从一台机器访问登录信息。机器限制登录访问

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

关于如何实现这一点的任何建议将会有所帮助。任何资源,你可以指向我也将不胜感激。

+0

登录后用户必须连接到某台计算机多长时间?或者这是永久的?什么阻止我在USB驱动器上使用迷你操作系统并登录到任何我想要的地方?如果你必须允许来自NAT后面的人,我不太确定这是否成立。即使不是...... – 2010-04-05 05:39:06

+0

登录详细信息在其设置的时间限制内在cookie中保持活动状态。使用迷你操作系统是不允许的。登录仅适用于一台机器的一个用户。感谢您的回复 – 2010-04-05 08:38:56

回答

0

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

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

如果“logintime”已设置,则不允许登录。

当它变成旧的时候刷新“logintime”(在你的例子中是2个月)。

+0

感谢您的帮助Zaf。我做了类似的事情。 我在数据库中插入了一个新列,并在成功登录时检查了一个标记,并在用户计算机上留下了一个cookie,将该计算机标记为已验证的计算机。 cron作业,在cookie过期的同时取消选中标志(从cookie安装时起2个月) – 2010-04-06 03:32:12

0

嗯,这对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

+0

您好Chacha102,感谢您的回复。我会试试这个。 我想要做的是1)用户首次登录 - >在用户登录的计算机上设置cookie/session,允许用户登录并浏览网站。标志是记录在数据库中以通知系统该特定用户已登录。该cookie在2个月后被删除2)如果用户然后尝试从不同的计算机登录,则系统将检测到(来自该标志)用户已登录在已经和不会允许该人登录。 – 2010-04-05 08:37:15

0

嗯,我不知道,我跟着你想要什么,但它听起来像是一旦有人在任何地点登录,这应该是唯一的在未来登录的位置?如果这是你想要做的事情,那么最终你可能会遇到一些没有静态IP地址的人遇到的麻烦。他们可能在同一台计算机上,但是如果他们的IP地址发生了变化,他们将无法登录。

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

+0

嗨乍得,感谢reply.I我不是要绑定用户登录到IP地址。我想要做的是1)用户首次登录 - >在用户登录的计算机上设置cookie,并允许用户登录并浏览网站。标志记录在数据库以通知系统该特定用户已登录。该cookie在2个月后被删除2)如果用户然后尝试从不同的计算机登录,则系统将检测到(来自该标志)用户已经登录并且将不允许该人登录。 – 2010-04-05 08:35:25