2

我正在创建一个用户无法尝试多次登录的应用程序。如果特定用户登录,我的数据库标志值将设置为 1,这意味着没有其他具有相同用户名和密码的成员可以登录。

如果用户注销我的数据库标志值设置为 0。一切正常,但现在我有一个不同的问题,即当用户突然关闭浏览器而没有注销页面或会话超时时,数据库标志值应自动设置为 0。现在我不知道该怎么做。请给我任何解决方案。

4

2 回答 2

7

在您的Global.asax文件中,您有Session_OnEnd()

public void Session_OnEnd()
{
    // Set flag to 0
}

如果您sessionState设置为INPROC(这是默认设置),如果您手动将其调整为StateServerSQL Server则此事件将被忽略。

当浏览器关闭窗口时,您可以onbeforeunload在 JavaScript 中使用

window.onbeforeunload = function(e) {
  // call an Ajax function to reset the state.
};
于 2013-09-03T11:52:14.777 回答
0

只需在数据库中创建一个列 isloggedin

例如:

USERNAME | PASSWORD | isloggedin | logintimestamp

    user | pass     | 0          | 3/9/2013 23:59:59

并在用户登录时将其设置为 1,并且在用户登录时使用 ajax 更新数据库中的当前时间...

如果这样做失败,请根据时间戳 http://dev.mysql.com/doc/refman/5.1/en/events.html使用计时器功能检查登录值

这是教程:http ://www.sitepoint.com/how-to-create-mysql-events/

于 2013-09-03T11:59:09.777 回答