Php 如何禁止用户从多台计算机登录?

Php 如何禁止用户从多台计算机登录?,php,security,session,Php,Security,Session,我有一个具有登录/注销功能的网站。我如何确保,100%,同样是在一种稳定的技术中,一个用户将不能从两台不同的计算机登录到同一个帐户 Javascript不能用于此,因为禁用它很容易 例如,.NET有一个会话结束函数,当用户中止与服务器的连接时执行该函数。如何使用PHP实现这一点 谢谢,Guy注意:当登录第二台计算机时,此技术将有效地注销第一台计算机上的帐户 当用户登录时,将用户的会话id记录到数据库或等效数据库中。在每个页面请求中,确保用户的会话id与存储区中为其帐户存储的会话id匹配。应拒绝来

我有一个具有登录/注销功能的网站。我如何确保,100%,同样是在一种稳定的技术中,一个用户将不能从两台不同的计算机登录到同一个帐户

Javascript不能用于此,因为禁用它很容易

例如,.NET有一个会话结束函数,当用户中止与服务器的连接时执行该函数。如何使用PHP实现这一点

谢谢,Guy

注意:当登录第二台计算机时,此技术将有效地注销第一台计算机上的帐户


当用户登录时,将用户的会话id记录到数据库或等效数据库中。在每个页面请求中,确保用户的会话id与存储区中为其帐户存储的会话id匹配。应拒绝来自会话id不匹配的登录帐户的请求,并注销用户

这取决于你想进入的深度。最常见的是:

  • 在登录时创建唯一的会话id cookie并将其保存在数据库中
  • 所有网页都会检查会话cookie以确保其有效
    • 如果会话无效,用户将重定向到登录页面
  • 当其他用户尝试登录时,它将覆盖上一个会话
    • 这实质上是淘汰了第一个用户

大型公司也会将IP地址存储在数据库中(这样会话cookie就不会被盗)

我想你的意思是,你不希望某个人同时从两台不同的计算机登录到同一个帐户。查看会话id。它对于每台计算机都是唯一的。这是可行的,但是如果他们通过不同的浏览器登录呢?从技术上讲,是同一台计算机,但会生成不同的sessiond。如果您使用IP作为标识符,那么它可能是两台不同的计算机,因为NAT。。。我认为你的答案是正确的,我只是在扮演魔鬼代言人,因为我打赌OP并不关心同一台PC上的多个浏览器;是的,IP不好。我与学校一起工作,他们经常让每台计算机解析为一个外部IP地址(甚至跨越几十个独立的学校建筑)。将IP存储在数据库中不起作用,IP可以并且会因各种有效的原因而改变。例如,考虑移动用户或公司负载平衡代理背后的用户。