关于微信公众号关注验证的一些新的想法

» WordPress » 关于微信公众号关注验证的一些新的想法

前言

之前写过关于微信公众号验证码功能的插件,最近发现也可以对其进行改进一下,当然我实际并没有对这个插件进行改动,只是说下看下法的

关于微信公众号关注验证的一些新的想法-极客公园

想法

目前的公众号验证码验证功能是,网页端留二维码,用户扫码关注,然后回复制定关键词,比如:验证码,之类,然后获取随机字符,然后将随机字符填写到网页中,页面对其进行验证,如果OK就显示内容或者其他操作。

今天准备换个方式,流程还是先显示二维码,然后需要用户点击生成随机字符如:sd345 显示在网页页面中,需要用户将这个字符发送到微信公众号里面,如果在规定时间内,微信公众号受到了这个验证码,那么认定验证通过,进行下一个操作。

实现代码

今天并没有准备做这个,只是简单梳理下代码。
首先是生成一个随机字符,可以把很多元素加进去,日期,时间,文章链接,用户浏览器UA,用户IP,一起打包MD5加密

在显示短代码的地方使用一个按钮,点击之后加载一个随机验证码出来

//生成微信验证码
function wx_captcha()
{
    date_default_timezone_set('Asia/Shanghai');
    $min      = floor(date("i") / 5);
    $day      = date("d");
    $day      = ltrim($day, 0);
    $url      = get_permalink();
    $wx_token = trim('xxxxoooootoken');/*微信token*/
    $ua       = $_SERVER['HTTP_USER_AGENT'];
    $ip       = $_SERVER['HTTP_CLIENT_IP'];
    $captcha  = sha1($min . $url . $wx_token.$ua.$ip);
    $captcha  = substr($captcha, $day, 6);
    return $captcha;
}

//生成验证码的短代码
function wx_captcha_gen_btn()
{
    return '<a id="wx_captcha_gen_btn" href="javascript:;" data-action="wx_captcha_gen" class="cm-btn primary wx_captcha_gen_btn">点击加载验证码</a>';;
}
add_shortcode('wx_captcha_btn', 'wx_captcha_gen_btn');

//接受ajajx信息
function wx_captcha_gen()
{
    if (isset($_POST['action']) && $_POST['action'] == 'wx_captcha_gen') {
        exit(wx_captcha());
    } else {
        exit('400');
    }
}
add_action('wp_ajax_wx_captcha_gen', 'wx_captcha_gen');
add_action('wp_ajax_nopriv_wx_captcha_gen', 'wx_captcha_gen');

在js代码里面做一个ajax生成验证码

$("#wx_captcha_gen_btn").click(function() {
    var ajax_data = {
        action: $("#wx_captcha_gen_btn").data("action")
    };
    $.post(ajaxurl, ajax_data,function(b){
        b = $.trim(b); //登陆信息
        if (b !== '400' && b == '200') {
            $('#wx_captcha_gen_btn').after(b);//插入验证码字符
                $.post(ajaxurl, 'checkmp',function(c){//开始检查公众号是否受到这个验证码
        			c = $.trim(c); //登陆信息
        			if (c !== '400' && c == '200') {//如果受到信息
            			$load_content();//加载被隐藏的内容
        				} else {
            			alert("发生错误");
        			}
    });
        } else {
            alert("发生错误");
        }
    });
});

上面的代码只是大概,不要当真,具体实现还要再深入的。

梳理下

1,用户打开页面
2,用户点击了加载验证码的按钮
3,加载验证码按钮发起ajax,后台受到信息生成验证码并显示在前台页面
4,验证码显示后发起另一个ajax,轮询微信公众号是否受到上面生成的验证码,为了性能考虑,设置轮询次数上限,到时候还没好认定失败
5,微信公众号收到验证码并验证OK,开始显示被隐藏的内容

-- 完 --

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

One Reply to “关于微信公众号关注验证的一些新的想法”

  1. 博主之前那个插件在 公众号回复一直提示
    “咋公众号回复 提示该公众号提供的服务出现故障请稍后再试”
    代码无法下载,在gitee私信你了,方便时间处理下麻烦了。

    技术请教下,插件看有缓存,默认缓存时间是多久技术有限没有找到代码修改的地方,谢谢了。