看到标题的时候,很多人应该就会说这个功能已经好长时间就有了,为什么还发这个文章呢? 我们肯定不至于把以前的功能拿过来写的,今天写的是不是一个真正的公众号验证码查看功能,是一个睡床上的时候想到的一个功能。
思路
首先想到的方法是采用一个公共的验证码池,就是一次性生成一些验证码,然后放在一个txt文件里面,然后去随机调用,读取文件之后组成数组,然后从数组中调出验证码,这个方法实现之后,然后经过思考了下,发现虽然能实现我需要的功能,但是没法用,毕竟这样等于验证码直接公开了,所以这个方法被淘汰了,又重新设计了另一个验证码方法。
验证码设计
重新设计的验证码方案是基于时间,域名和微信token的,时间上以1个小时为单位,那么有60分钟,每分钟对应一个验证码,就是有60个,比如13-12,分钟就是12,那么验证码可以简单的设为12,如果需要每2分钟换一次验证码,当前分钟数除以2就可以了,以此类推。
将网站域名和当前分钟拼接字符串,比如拼接成12https://gitcafe.net,再加上微信公众号token拼接成【12https://gitcafe.netweixintoken】,稍后对其加密计算,使用Sha1方法,计算出来是40位的字符串,我们截取其中6位作为验证码,这个时候再加入日期,比如今天是2-18,那么就从第18个截取6为字符串,保证一个月30天验证码不发生重复,最终这个6位字符串作为验证码可以发送到微信公众号以及用来验证网页输入的验证码是否正确。
验证码设计OK了,下面就是连接微信公众号了,在公众号示例代码基础上稍微改改,只保留微信类,其他代码全部不要,试验一下,OK,没问题。
微信端好了,然后就是WordPress端了,这里我要吐槽一下网上流行的那个微信公众号验证码可见的代码了,那么多时间还是一个原生的表单提交,而且是刷新之后会重复提交的。云落这里稍微改下,改为ajax提交实际体验会好些。
本文代码不重要,重要的是验证码设计思路,后面需要使用验证码的地方也可以这样设计,另外这种验证码有一个小缺点,就是过期时间并不是从验证码生成之后开始计算的,是验证码随着时间过期的,所以如果你在59秒时获取到验证码就会立马失效,当然这个只是小缺点,不妨碍使用,过期验证码重新申请就可以了。
插件说明
另外一个就是管理员是没有效果的,管理员需要查看的话,需要退出账号看下
插件下载
[Download]
资源名称:WordPress真微信公众号验证码查看插件
下载地址:https://www.lanzous.com/i9h65uh
[/Download]
发表评论