Hay dos formas de implementar esta función:
1. solicitud
Utilice el objeto de aplicación: si está creando una comunidad grande, es posible que necesite generar una aplicación para cada ID de inicio de sesión. Aunque el diseño del programa será más simple, habrá demasiados usuarios conectados y consumirá recursos del servidor. No se recomienda aquí porque el objeto de aplicación es fácil de generar cuando el usuario inicia sesión, pero para liberarlo realmente por completo cuando el usuario cierra sesión en el sistema, no he visto un método mejor hasta ahora ~
<%
.....Obtener el nombre de usuario nombre de usuario.....
siAplicación(nombre de usuario)<>entonces
respuesta.writeEl usuario ya ha iniciado sesión
respuesta.fin
endif
Aplicación (nombre de usuario) = nombre de usuario'' almacena el nombre de usuario del usuario
%>
Agregue el evento sessiononend al archivo global y Application(isuserlogin)=false cuando esté desconectado
Además, es necesario detectar si el hilo está colgado. Existe un método especial, que es un determinado elemento en el objeto del servidor.
(Referencia: http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=815)
2. base de datos+asp
Puede que sea más complicado de hacer, pero es adecuado para sistemas con una gran cantidad de usuarios conectados.
Primero cree una base de datos para el usuario; use el acceso para crear un nuevo onlyTOL8.mdb
Tabla de datos 1: los usuarios almacenan información de registro de usuarios
Se configuran las siguientes tablas de datos: uID (número automático) nombre de usuario (tipo de carácter) contraseña de usuario (tipo de carácter)
Tabla de datos 2: onlyLogin almacena información de inicio de sesión temporal del usuario
Se configuran las siguientes tablas de datos: OLname (tipo de carácter) OLtime (tipo de fecha) OLip (tipo de carácter)
Una vez creada la base de datos, agregue datos manualmente a la tabla de usuarios, agregue TOL8 a la tabla de nombre de usuario y agregue 111 a la tabla de contraseña de usuario.
A continuación, cree la interfaz de inicio de sesión del usuario. Copie el siguiente código y guárdelo en el archivo onlyLogin.asp.
<html>
<cabeza>
<meta http-equiv=Tipo de contenido content=text/html charset=gb2312>
<title>Está prohibido iniciar sesión en la misma cuenta desde diferentes regiones al mismo tiempo</title>
</cabeza>
<cuerpo>
<nombre del formulario=método formulario1=acción de publicación=loginPost.asp>
Nombre de usuario: <nombre de entrada=tipo de nombre de usuario=id de texto=tamaño de nombre de usuario=15 longitud máxima=5>
Contraseña: <nombre de entrada=tipo de contraseña de usuario=id de contraseña=tamaño de contraseña de usuario=15 longitud máxima=15>
<tipo de entrada=enviar nombre=Enviar valor=Iniciar sesión>
</formulario>
</cuerpo>
</html>
Una vez completado, cree un nuevo archivo loginCONN.asp, copie el siguiente código y guárdelo para conectarse a la base de datos.
<%
Atenuar CONN_TOL8
Conexión tenue_T
mmdd tenue
mmdd=soloTOL8.mdb
Establecer CONN_TOL8 = Server.CreateObject(ADODB.Connection)
Conn_T=Provider=Microsoft.Jet.OLEDB.4.0;Fuente de datos= & Server.MapPath(&mmdd&)
en caso de error reanudar siguiente
CONN_TOL8.Abrir Conn_T %>
A continuación, cree un archivo loginPost.asp que también exista en este directorio. Esta es la clave. Mire detenidamente el siguiente código:
<!--#include file=loginCONN.asp -->
<%
''Eliminar usuarios activos dentro del tiempo maxTime, maxTime se ha definido en el archivo loginCONN.asp
Conn_TOL8.Execute(Eliminar de onlyLogin donde DATEDIFF(''s'',OLtime, now()) > & maxTime & )
''================================================= == ===============
Dim rs, ts, txt, sql, nombre de usuario, contraseña de usuario
si Request.Form(Enviar)=Iniciar sesión entonces
userName=Request.Form(userName)'' Obtener el nombre de inicio de sesión del usuario del formulario
userPass=Request.Form(userPass)'' Obtener la contraseña de inicio de sesión del usuario del formulario
''Dado que aquí no estamos discutiendo cuestiones de seguridad, las contraseñas de los usuarios no están cifradas.
Establecer rs = Server.CreateObject(ADODB.RECORDSET)
sql=SELECT * FROM usuarios donde nombre de usuario = '' & nombre de usuario & '' y contraseña de usuario = '' & contraseña de usuario & ''
rs.Abrir sql, CONN_TOL8,1,1
SI no es rs.eof entonces
Call isOK(userName) '' Si el nombre de usuario y la contraseña son correctos, isOK se personalizará en el siguiente programa.
demás
Response.Write(<a href=javascript:history.go(-1)>nombre de usuario o contraseña incorrectos</a>)
Respuesta.Fin()
terminar si
rs.Cerrar
Establecer rs=Nada
terminar si
Sub está bien (nombre de usuario)
Dim Olip '' IP guardada por el nombre de usuario de inicio de sesión actual en la base de datos
Dim Oltime '' La última vez que se actualizó la página web cuando el nombre de usuario de inicio de sesión actual se guarda en la base de datos es un dato importante para calcular si el usuario está en línea.
Dim OLip1 '' registra la IP de inicio de sesión del usuario actual, que se utiliza para distinguir si es el mismo usuario.
OLip1=Request.ServerVariables(REMOTE_ADDR)''Obtenga la IP del usuario que envió la información de inicio de sesión
Establezca ts=Conn_TOL8.execute(Seleccione * FROM onlyLogin DONDE OLname=''& nombre de usuario & '')
si no es ts.eof entonces '' Consulta la base de datos para ver si hay información de inicio de sesión para este usuario
tiempoOL=ts(tiempoOL)
OLip=ts(OLip)
si OLip1<>OLip y DateDiff(s,OLtime,now()) <maxTime entonces
''La oración anterior determina si la IP del usuario de inicio de sesión enviada no es la última IP del usuario registrada en la base de datos y
''Si la diferencia entre la hora de la última actividad del usuario y la hora actual no excede el número de segundos especificado, se confirma que el usuario está actualmente en línea.
Response.Write <a href=javascript:history.go(-1)>Este usuario está actualmente en línea. ¡No puede iniciar sesión en esta cuenta desde otros lugares! </a>
Respuesta.Fin()
demás
'' De lo contrario, se determina que el inicio de sesión fue exitoso y el valor se paga a la sesión.
Sesión(lgName)=nombre de usuario
Sesión(lgPass)=userPass
Respuesta.Redireccionar inicio de sesiónOK.asp
Respuesta.Fin
terminar si
demás
''Si la base de datos no tiene un registro de usuario de inicio de sesión, ejecute la siguiente declaración
ls tenues
Establecer ls=Servidor.CreateObject(ADODB.RECORDSET)
ls.OpenSelect * Desde onlyLogin,CONN_TOL8,2,2
ls.AÑADIR NUEVO
ls(OLname)=nombre de usuario
ls(OLip)=OLip1
ls(tiempoOL)=AHORA()
ls.ACTUALIZAR
ls.Cerrar
Establecer ls=Nada
''Determinar el inicio de sesión exitoso y pagar el valor de la sesión
Sesión(lgName)=nombre de usuario
Sesión(lgPass)=userPass
Respuesta.Redireccionar inicio de sesiónOK.asp
Respuesta.Fin
terminar si
Fin Sub %>
Después de iniciar sesión correctamente, la página saltará a loginOK.asp
<tipo de estilo=texto/css>
<!--
cuerpo {color de fondo: #FF9900;}
-->
</estilo>
<% IF Sesión(lgName)<> entonces %>
¡Has iniciado sesión exitosamente! ! ! El siguiente es un iframe que se introduce furtivamente en la página web para actualizar la página web a la hora especificada e informar al servidor si está en línea.
Para facilitar la distinción, utilizamos el blanco como color de fondo para la página web del marco.
<iframe border=0 nombre=nueva_fecha ancho de margen=0 espacio de cuadros=0 altura de margen=0 src=loginFrame.asp
frameborder=0 noResize width=100 scrolling=no height=30 vspale=0></iframe>
<% más %>
No has iniciado sesión
<% finaliza si %>
Lo siguiente que debe hacer es loginFrame.asp
<!--#include file=loginCONN.ASP -->
<% CONN_TOL8.Execute(Actualizar solo Iniciar sesión Establecer OLtime=''& NOW() & '' donde OLname = '' & Session(lgName) & '') %>
<html><head><meta http-equiv=refresh content=<%=(maxTime-5)%>;
En este punto, el programa está completo. La clave de este programa es determinar si el usuario está en línea.