Existem duas maneiras de implementar esta função:
1. aplicativo
Use o objeto de aplicativo: Se você estiver construindo uma comunidade grande, pode ser necessário gerar uma aplicação para cada ID de login. Embora o design do programa seja mais simples, haverá muitos usuários logados e isso consumirá recursos do servidor. não é recomendado aqui porque o objeto de aplicação é fácil de gerar quando o usuário efetua login, mas para realmente liberá-lo completamente quando o usuário efetua logout do sistema, não vi um método melhor até agora ~
<%
..... Obtenha o nome de usuário nome de usuário .....
ifAplicativo(nome de usuário)<>então
response.writeO usuário já está logado
resposta.fim
fim
Application(username)=username'' armazena o nome de usuário do usuário
%>
Adicione o evento sessiononend ao arquivo global e Application(isuserlogin)=false quando estiver offline
Além disso, é necessário detectar se o thread está travado. Existe um método especial, que é um determinado item no objeto do servidor.
(Referência: http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=815)
2. banco de dados+asp
Pode ser mais complicado de fazer, mas é adequado para sistemas com grande número de usuários logados.
Primeiro crie um banco de dados para o usuário - use o acesso para criar um novo onlyTOL8.mdb
Tabela de dados 1: usuários armazenam informações de registro do usuário
As seguintes tabelas de dados são configuradas: uID (número automático) userName (tipo de caractere) userPass (tipo de caractere)
Tabela de dados 2: onlyLogin armazena informações de login temporárias do usuário
As seguintes tabelas de dados são configuradas: OLname (tipo de caractere) OLtime (tipo de data) OLip (tipo de caractere)
Após a construção do banco de dados, adicione manualmente os dados à tabela de usuários, adicione TOL8 à tabela userName e adicione 111 à tabela userPass.
Em seguida, crie a interface de login do usuário. Copie o código a seguir e salve-o no arquivo onlyLogin.asp.
<html>
<cabeça>
<meta http-equiv=Tipo de conteúdo content=text/html charset=gb2312>
<title>É proibido fazer login na mesma conta em regiões diferentes ao mesmo tempo</title>
</head>
<corpo>
<nome do formulário=form1 método=post action=loginPost.asp>
Nome de usuário: <input name=userName type=text id=userName size=15 maxlength=5>
Senha: <nome de entrada=tipo userPass=id da senha=tamanho userPass=15 maxlength=15>
<tipo de entrada=nome de envio=Valor de envio=Login>
</form>
</body>
</html>
Após a conclusão, crie um novo arquivo loginCONN.asp, copie o código a seguir e salve-o para conectar-se ao banco de dados.
<%
Escurecer CONN_TOL8
Dim Conexão_T
Escurecer mmdd
mmdd=apenasTOL8.mdb
Definir CONN_TOL8 = Server.CreateObject(ADODB.Connection)
Conn_T=Provider=Microsoft.Jet.OLEDB.4.0;Fonte de dados= & Server.MapPath(&mmdd&)
em caso de erro, retome a seguir
CONN_TOL8.Abrir Conn_T %>
A seguir, crie um arquivo loginPost.asp que também existe neste diretório. Esta é a chave.
<!--#include arquivo=loginCONN.asp -->
<%
''Exclua usuários ativos dentro do tempo maxTime, maxTime foi definido no arquivo loginCONN.asp
Conn_TOL8.Execute (Excluir de onlyLogin onde DATEDIFF(''s'',OLtime, now()) > & maxTime & )
''============================================= == ==============
Dim rs, ts, txt, sql, userName, userPass
se Request.Form(Submit)=Login então
userName=Request.Form(userName)'' Obtenha o nome de login do usuário do formulário
userPass=Request.Form(userPass)'' Obter senha de login do usuário do formulário
''Como não estamos discutindo questões de segurança aqui, as senhas dos usuários não são criptografadas.
Definir rs = Server.CreateObject(ADODB.RECORDSET)
sql=SELECT * FROM usuários onde userName = '' & userName & '' e userPass = '' & userPass & ''
rs.Abrir sql, CONN_TOL8,1,1
SE não for rs.eof então
Chame isOK(userName) '' Se o nome de usuário e a senha estiverem corretos, isOK será personalizado no programa a seguir.
outro
Response.Write(<a href=javascript:history.go(-1)>Nome de usuário ou senha incorretos</a>)
Resposta.End()
terminar se
rs.Fechar
Definir rs=Nada
terminar se
Sub está OK (nome do usuário)
Dim Olip '' IP salvo pelo nome de usuário de login atual no banco de dados
Dim Oltime '' A última vez que a página da web foi atualizada quando o nome de usuário de login atual é salvo no banco de dados é um dado importante para calcular se o usuário está online.
Dim OLip1 '' registra o IP de login do usuário atual, usado para distinguir se é o mesmo usuário.
OLip1=Request.ServerVariables(REMOTE_ADDR)''Obtém o IP do usuário que enviou informações de login
Defina ts=Conn_TOL8.execute(Selecione * FROM onlyLogin WHERE OLname=''& userName & '')
se não for ts.eof então '' Consulte o banco de dados para ver se há alguma informação de login para este usuário
OLtime=ts(OLtime)
OLip=ts(OLip)
se OLip1<>OLip e DateDiff(s,OLtime,now()) < maxTime então
''A frase anterior determina se o IP do usuário de login enviado não é o último IP do usuário registrado no banco de dados e
''Se a diferença entre o horário da última atividade do usuário e o horário atual não exceder o número especificado de segundos, será confirmado que o usuário está online no momento.
Response.Write <a href=javascript:history.go(-1)>Este usuário está online no momento. Você não pode fazer login nesta conta de outros lugares! </a>
Resposta.End()
outro
'' Caso contrário, determina-se que o login foi realizado com sucesso e o valor é pago à sessão.
Sessão(lgName)=nomedeusuário
Sessão(lgPass)=userPass
Resposta.Redirect loginOK.asp
Resposta.Fim
terminar se
outro
''Se o banco de dados não tiver um registro de usuário de login, execute a seguinte instrução
Escurecer ls
Definir ls=Server.CreateObject(ADODB.RECORDSET)
ls.OpenSelect * De somenteLogin,CONN_TOL8,2,2
ls.ADDNEW
ls(OLnome)=nomedeusuário
ls(OLip)=OLip1
ls(OLtime)=AGORA()
ls.UPDATE
ls.Fechar
Definir ls=Nada
''Determine o login bem-sucedido e pague o valor à sessão
Sessão(lgName)=nomedeusuário
Sessão(lgPass)=userPass
Resposta.Redirect loginOK.asp
Resposta.Fim
terminar se
Fim Sub %>
Após o login bem-sucedido, a página irá para loginOK.asp
<tipo de estilo=texto/css>
<!--
corpo {cor de fundo: #FF9900;}
-->
</estilo>
<% SE Sessão(lgName)<> então %>
Você fez login com sucesso! ! ! A seguir está um iframe que é inserido na página da web para atualizá-la no horário especificado e informar ao servidor se você está online.
Para facilitar a distinção, usamos o branco como cor de fundo do quadro da página da web.
<iframe border=0 name=new_date marginwidth=0 framespacing=0 marginheight=0 src=loginFrame.asp
frameborder=0 noResize width=100 scrolling=no height=30 vspale=0></iframe>
<% mais %>
Você não está logado
<% fim se %>
A próxima coisa a fazer é loginFrame.asp
<!--#incluir arquivo=loginCONN.ASP -->
<% CONN_TOL8.Execute(Atualização apenasLogin Set OLtime=''& NOW() & '' onde OLname = '' & Session(lgName) & '') %>
<html><head><meta http-equiv=refresh content=<%=(maxTime-5)%>;
Neste ponto, o programa está concluído. A chave deste programa é determinar se o usuário está online.