4.15. 验证码

简介:

用户注册,登陆等等需要验证码,下面的方案是,请求验证码生成一个随机验证码,存在code中,identity可以存储来源IP/手机号码/Cookie等等用户校验, 5分钟内如果没有被使用就会删除,如果5分钟内被使用也会删除。type 可以存放www,user,bbs,admin.....等等,将所有验证码放在captcha表中统一管理。

这个方案主要是考虑没有memcache/redis/apc/xcache等等缓存环境下的解决方案,你也可以将下表改造一下,增加ttl字段用于存放生存时间,而不是采用5分钟一刀切的方案。

CREATE TABLE `captcha` (
	`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,
	`type` ENUM('user','admin') NOT NULL DEFAULT 'admin' COMMENT '验证码类型',
	`identity` VARCHAR(32) NOT NULL COMMENT '唯一身份识别md5摘要',
	`code` VARCHAR(6) NOT NULL COMMENT '验证码',
	`ctime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',
	PRIMARY KEY (`id`),
	UNIQUE INDEX `code` (`code`),
	UNIQUE INDEX `identity` (`identity`)
)
COMMENT='验证码'
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
		
		
CREATE EVENT `captcha` ON SCHEDULE
		EVERY 5 MINUTE STARTS '2013-07-08 16:27:03'
	ON COMPLETION PRESERVE
	ENABLE
	COMMENT ''
	DO BEGIN
	delete from captcha where type='myid' and ctime < DATE_ADD(now(), INTERVAL -5 MINUTE);
END
		





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

目录
相关文章
|
6月前
|
C++
|
6月前
生成验证码
生成验证码
39 0
|
缓存 前端开发 NoSQL
南南的文章-验证码还能这样生成?
南南的文章-验证码还能这样生成?
85 0
南南的文章-验证码还能这样生成?
|
缓存 JavaScript 安全
|
机器学习/深度学习 人工智能 前端开发
关于验证码,你不知道的一些问题!
关于验证码,大家也许会有很多疑问,下面我总结了一些常见问题。
关于验证码,你不知道的一些问题!
|
前端开发 C# 数据安全/隐私保护
C#验证码
验证码通常是为了区分用户是人还是计算机,也可以防止破解密码、刷票等恶意行为,而客户端上多数会用在关键操作上,比如购买、登录、注册等场景。现在验证码的种类样式也特别多,今天教大家如何用C#做出滑动拼图验证码吧~
C#验证码
|
C# 图形学 索引
|
Web App开发 Java