将用户链接到计算机不是一个好主意。为什么要先创建一个 Web 应用程序的独立性和灵活性(假设它是一个 Web 应用程序,因为它是 PHP,或者您实际上有命令行用户?),然后将其限制在单个设备上,这可能会中断,被盗……也许公司没有为每位用户设置固定的工作地点,但它为大量兼职员工使用较少数量的计算机,因此每个用户每天可能使用不同的计算机。
如果你真的想要这样的限制,你最好只限制每个用户的会话数。即:在表中记录会话 ID 和这些会话的用户名。在每个请求上,更新表以存储请求日期时间,以便您可以检查过期会话。使用 MySQL,您可以制作存储类型的表,该表MEMORY
速度快,对于会话信息非常有用。当您重新启动数据库服务器时,数据将消失,但这通常不是此类信息的问题。
现在,有继续的可能性:
如果用户在另一台 PC 或浏览器上再次登录,它将收到一个新的会话 ID。在这种情况下,在登录过程中,您可以查看会话表以查看用户是否打开了另一个会话 ID。如果是这样,请阻止登录。
如果会话超时,例如超过 15 分钟,您可以允许登录并删除旧会话。
缺点是如果浏览器或 PC 崩溃,用户必须等待超时时间才能继续在另一个位置工作。这在任何工作环境中可能都是不可接受的。
更好的解决方案可能是:用户只能有一个“活动”会话。如果用户从另一个工作区登录,他们将自动获得一个新会话。如果发生这种情况,您可以只接受新会话并删除旧会话 ID。如果他们继续使用旧会话,您可以看到该会话不再在会话表中,需要他们再次登录。
使用该解决方案,用户将能够在工作区之间快速切换,而无需等待,但如果两个用户同时使用相同的用户名,则几乎每个请求都必须重新登录。
但我真的会三思而后行:你到底为什么想要这个限制?如果一家公司愿意使用超过允许的用户数量的软件,他们也愿意只是更改您的 PHP 代码以删除此检查,这将是微不足道的。
此外,如果您使用软件太烦人,他们可能会决定根本不使用它并寻找替代方案。我认为最好相信你的客户。