1. Principe Dans global.asax dans .net, il existe des événements Application_AuthenticateRequest et Application_BeginRequest qui sont déclenchés à chaque accès au fichier aspx. Cependant, Application_BeginRequest ne peut pas identifier les tickets d'identité ayant subi une authentification FROMS. Il ne peut donc être placé que dans Application_AuthenticateRequest.
Mon principe de mise en œuvre est le suivant : à chaque accès au fichier aspx, il sera jugé s'il y a cet utilisateur dans la table en ligne (le nom d'utilisateur a été connecté, l'adresse IP n'a pas été connectée), s'il n'existe pas , l'identité de l'utilisateur et enfin l'heure d'accès, la dernière adresse IP consultée et la dernière URL consultée sont stockés dans la base de données. S'il est déjà dans la base de données, mettez à jour l'enregistrement et mettez à jour l'heure du dernier accès, l'adresse IP et l'URL du dernier accès.
Dans le même temps, supprimez les données de la base de données distantes de plus de 20 minutes de l'heure actuelle (aucune opération pendant 20 minutes n'est considérée comme un délai d'attente).
2. Avantages : vous pouvez non seulement voir le nombre précis de personnes actuellement en ligne, mais également savoir qui est en ligne, s'ils sont connectés, la proportion de visiteurs qui sont membres et leur emplacement, et calculer le nombre de personnes sur un site. certaine page.
3. Structure de la base de données :
Longueur du type de champ de clé primaire, qu'il soit vide ou non
1uson_serialint40 numéro de série
0uson_uservarchar200 nom d'utilisateur (IP si vous n'êtes pas connecté)
0uson_companyvarchar1000 nom de l'entreprise (si vous n'êtes pas connecté, il s'agit de « visiteur »)
0uson_ip varchar200Adresse IP
0uson_datedatetime80 heure de la dernière opération
0uson_urlvarchar1000 chemin de la dernière page d'opération
4. Notes sur le programme :
1. Le programme se trouve dans global.asax
2. J'utilise l'authentification FORMS.
3. Veuillez utiliser System.Web.Security
protected void Application_AuthenticateRequest (Object sender, EventArgs e)
{
string strUserID = string.Empty;
string strCompany = string.Empty;
si (Request.IsAuthenticated)
{
Identité FormsIdentity = (FormsIdentity)User.Identity;
Ticket FormsAuthenticationTicket = identité.Ticket ;
strUserID = Utilisateur.Identity.Name ;
strCompany = ticket.UserData.Split("|".ToCharArray())(2];
}
autre
{
strUserID = Request.UserHostAddress ;
strCompany = "Visiteur" ;
}
MemberOnlineInfo objOnline = new MemberOnlineInfo (strUserID, Request.UserHostAddress, DateTime.Now.ToString(), Request.FilePath, strCompany
memberAccount account = new MemberAccount();
si (!account.CheckUserOnline(strUserID))
compte.AddOnline(objOnline);
autre
account.UpdateOnline(objOnline);
//Supprimer les membres expirés
compte.DeleteOnline();
}