Javascript 验证只有一个用户登录到一个帐户
我正在开发一个网站,我想做一些安全程序,我想确保只有一个用户可以从一台计算机登录到他的帐户 那么,我如何用php甚至javascript代码处理这个问题呢Javascript 验证只有一个用户登录到一个帐户,javascript,php,security,ip,web-deployment,Javascript,Php,Security,Ip,Web Deployment,我正在开发一个网站,我想做一些安全程序,我想确保只有一个用户可以从一台计算机登录到他的帐户 那么,我如何用php甚至javascript代码处理这个问题呢 注意:我尝试使用$\u服务器['REMOTE\u ADDR'],但IP不稳定。您只需在用户表中添加一列(在线)。当用户登录时,设置为true。注销时,设置为false。你也需要与会话一起工作。保存要验证的用户会话 if ( user.is_online ){ if ( user.session_id == this.session.i
注意:我尝试使用
$\u服务器['REMOTE\u ADDR']
,但IP不稳定。您只需在用户表中添加一列(在线)。当用户登录时,设置为true。注销时,设置为false。你也需要与会话一起工作。保存要验证的用户会话
if ( user.is_online ){
if ( user.session_id == this.session.id )
//OK, same user log in.
else
//OPS, different sessions, other user log in.
}
else {
//user log in first time
}
很抱歉代码太差,我没有用php编写代码,但是这个验证必须是服务器端的
@更新
如果用户未注销就离开了网站,则需要再添加一次验证。检查会话状态是否处于活动状态。如果不是,则left为_online true,并将会话更改为新会话。在中了解更多信息
也许,您需要运行一些cron来销毁非活动会话。我不知道这是否是最好的选择。在PHP中,当用户登录时,将其IP或MAC地址保存到您拥有的任何userAuth表中。然后,当他们下次登录时,检查是否是同一个MAC地址。我想这是最简单的方法。此外,如果他们没有退出上一个会话,您可以简单地锁定第二次登录尝试。然而真正的IP不稳定,它会改变,我也无法获得Mac地址。好吧,当用户登录时,创建一个唯一的MD5哈希(比如,哈希用户名、日期时间等等)。将其保存在本地存储和服务器上的auth表中。如果它们不匹配,这是一个新会话。这是一个很好的解决方案,但我如何将其存储在本地???将为您提供一些关于本地存储(客户端)的指针,PHP数据库的内容应该非常简单,只需向表中添加另一个字段即可。很好。session.id通常是MD5,正如我在评论中所描述的那样。说得好!因此,如果我没有真正注销,只需关闭浏览器。然后我不再在线,但我仍然无法在其他地方登录。这是一个问题,如果会话被破坏,那么用户被“锁定”,因为DB认为它在线,但没有匹配的会话。是的。使用PHP中的session_status,可以获得会话的实际状态。如果为false,则用户未注销就离开了网站。