4.19. 在线用户表

简介:

该表的功能是显示在线用户,控制多点登陆,防止异常退出

		
CREATE TABLE IF NOT EXISTS `employees_online` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL COMMENT 'User ID',
  `ipaddr` varchar(15) NOT NULL COMMENT 'IP Address',
  `expire` datetime NOT NULL COMMENT 'Expire time',
  `status` enum('Login','Logout','Offline') NOT NULL DEFAULT 'Login' COMMENT 'Current Status',
  `message` varchar(255) NOT NULL COMMENT 'Leave a message',
  `ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'Created Time',
  `mtime` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT 'Modified Time',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='show listing of last logged in users';

DELIMITER //
CREATE DEFINER=`dba`@`192.168.%` EVENT `employees_online` ON SCHEDULE EVERY 15 MINUTE STARTS '2014-08-22 10:33:24' ON COMPLETION NOT PRESERVE ENABLE COMMENT 'Employees Online Logging' DO BEGIN
	update employees_online set `status` = 'Offline' where expire < now() and ctime > DATE_ADD(now(), INTERVAL -15 MINUTE);
END//
DELIMITER ;

SET @OLDTMP_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_ENGINE_SUBSTITUTION';
DELIMITER //
CREATE TRIGGER `employees_online_before_delete` BEFORE DELETE ON `employees_online` FOR EACH ROW BEGIN
	SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Permission denied', MYSQL_ERRNO = 1001;
END//
DELIMITER ;
SET SQL_MODE=@OLDTMP_SQL_MODE;

SET @OLDTMP_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_ENGINE_SUBSTITUTION';
DELIMITER //
CREATE TRIGGER `employees_online_before_update` BEFORE UPDATE ON `employees_online` FOR EACH ROW BEGIN
	SET NEW.`id` = OLD.id;
	SET NEW.`username` = OLD.username;
	SET NEW.`ipaddr` = OLD.ipaddr;
	SET NEW.`message` = OLD.message;
	SET NEW.`ctime` = OLD.ctime;
END//
DELIMITER ;
SET SQL_MODE=@OLDTMP_SQL_MODE;	
			
		

登陆日志将永久保存,防止数据被删除由触发器employees_online_before_delete负责

防止有人撰改登陆信息,由触发器employees_online_before_update负责,主要是防止撰改登陆名与IP地址,这样讲不能从其他电脑登陆,必须用户Logout才能在其他电脑登陆。





原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

目录
相关文章
|
7月前
|
弹性计算 分布式计算 大数据
MaxCompute产品使用合集之如何将用户A从项目空间A申请的表权限需要改为用户B
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
安全 数据库 数据安全/隐私保护
设计游戏用户信息表
设计游戏用户信息表
|
SQL 大数据 调度
电商项目之 DWD 用户产品浏览表 SQL 实现|学习笔记
快速学习电商项目之 DWD 用户产品浏览表 SQL 实现
电商项目之 DWD 用户产品浏览表 SQL 实现|学习笔记
|
网络协议 测试技术 Go
海量用户通讯系统-显示在线用户列表(1)|学习笔记
快速学习海量用户通讯系统-显示在线用户列表(1)
海量用户通讯系统-显示在线用户列表(1)|学习笔记
|
Web App开发 JavaScript PHP
记录VisualSVNServer配置在线密码修改功能
VisualSVN Server使用的是64位版 查看对应的apache版本号是 2.2.32.这个版本需要使用php5.5以下的,且需要使用64位的php。 下载php 5.4 的64位版本。 php的下载地址:官网地址:http://windows.php.net/download/ http://windows.php.net/downloads/pecl/releases/ 官网从5.5开始才提供了64位的bin包下载。
3197 0
|
网络协议 测试技术 Go
海量用户通讯系统-显示在线用户列表(2)|学习笔记
快速学习海量用户通讯系统-显示在线用户列表(2)
|
JSON 网络协议 测试技术
海量用户通讯系统-显示在线用户列表(6)|学习笔记
快速学习海量用户通讯系统-显示在线用户列表(6)
|
网络协议 测试技术 Go
海量用户通讯系统-显示在线用户列表(5)|学习笔记
快速学习海量用户通讯系统-显示在线用户列表(5)
|
机器学习/深度学习 JSON 前端开发
海量用户通讯系统-显示在线用户列表(4)|学习笔记
快速学习海量用户通讯系统-显示在线用户列表(4)
|
机器学习/深度学习 JSON 网络协议
海量用户通讯系统-显示在线用户列表(3)|学习笔记
快速学习海量用户通讯系统-显示在线用户列表(3)