我正在创建一个用户无法尝试多次登录的应用程序。如果特定用户登录,我的数据库标志值将设置为 1,这意味着没有其他具有相同用户名和密码的成员可以登录。
如果用户注销我的数据库标志值设置为 0。一切正常,但现在我有一个不同的问题,即当用户突然关闭浏览器而没有注销页面或会话超时时,数据库标志值应自动设置为 0。现在我不知道该怎么做。请给我任何解决方案。
我正在创建一个用户无法尝试多次登录的应用程序。如果特定用户登录,我的数据库标志值将设置为 1,这意味着没有其他具有相同用户名和密码的成员可以登录。
如果用户注销我的数据库标志值设置为 0。一切正常,但现在我有一个不同的问题,即当用户突然关闭浏览器而没有注销页面或会话超时时,数据库标志值应自动设置为 0。现在我不知道该怎么做。请给我任何解决方案。
在您的Global.asax
文件中,您有Session_OnEnd()
public void Session_OnEnd()
{
// Set flag to 0
}
如果您sessionState
设置为INPROC
(这是默认设置),如果您手动将其调整为StateServer
,SQL Server
则此事件将被忽略。
当浏览器关闭窗口时,您可以onbeforeunload
在 JavaScript 中使用
window.onbeforeunload = function(e) {
// call an Ajax function to reset the state.
};
只需在数据库中创建一个列 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使用计时器功能检查登录值