浅聊公众订阅号如何实现扫码获取验证码登录的思路

摘要:

需求扫码关注公众号,获取验证码,填入验证码登录现在有很多不愿意花钱验证实现扫码登录 有多种...

描述:

需求

扫码关注公众号,获取验证码,填入验证码登录

现在有很多不愿意花钱验证实现扫码登录  有多种原因

实现的门槛高以及不想花钱,想白嫖  其实或一个逻辑去思考

如果要求不是太高,可以实现扫码关注获取验证码

逻辑分析(YZMCMS为例)

一,官方自带公众号模块,但是大部分功能需要认证,可以不管 主要实现获取验证码

二,关注自动回复验证码,可以用自带的验证码功能来做 找到微信模块index.class文件

在文本回复哪里,写入一句判断列如:

if($arr['content'] == '登录'){
  return $this->_replytext($this->check_code()); 
}

如果用户回复登录关键词则执行 回复验证码PHP代码

执行的PHP代码可以这样写 加载系统类 调用系统类代码 并输出

$code = yzm_ ::load_sys_class('code');
$code->get_code()
return $wxConfig;

所以打开公众号就有现在的效果 列如:

image.png

三,因为验证的输出与验证是需要开启$_SESSION而且要在页面上才能实现

会出现发出的验证码一直提示为错误 那么我们就需要一个临时存储的数据表

字段就需要id code token inputime status 

四,微信模块index.class文件写 回复验证码并插入

$data['code'] = $code->get_code();
	    
$data['status'] = 1;
	    
$data['inputtime'] = SYS_TIME;
	    
$data['token'] = $this->msgobj->FromUserName;
	    
D('code')->insert($data);

五,现在验证时间都存在临时表里面了 那怎么用呢  我们需要绑定公众号 分析逻辑

image.png

需要获取用户ID 以及微信模块插入储存的token 

PHP语句可以这样写 查找刚刚插入的验证码 并重新插入member_authorization

$arr['token'] = $data['token'];
	     
$arr['userid'] = intval(get_cookie('_userid')); 
	     
$arr['inputtime'] = SYS_TIME;
	     
$arr['authname'] = 'wx';
	     
D('member_authorization')->insert($arr, true, false);

现在数据都有了 用户ID 用户的token 都有了

六,判断是否绑定公众号,查询 member_authorization 表 条件是查询userid 

如果有数据则绑定了,如果没有那就是没有绑定  写一个函数判断一下

function get_authorization($userid,$authname) {
    
    $data = D('member_authorization')->where(array('userid' => $userid,'authname'=>$authname))->find();
    
    if($data){
        
       return $data['userid']; 
    }
    else{
        return'';
    }
    
}

七,现在验证码 绑定我们都有了 接下来判断验证那码

通过前端传来的验证码 我们查询是否有此验证码 如果没有验证码就是错的 如果查询不到那也是错的

就不能执行 注意格式化大小写

if(empty($data['code']) || strtolower($code)!=$data['code'])

八,判断时间是否过期 官方自带的验证码没有过期一说,只有正确或者错误  所以我们在上一步中插入了

验证码时间 如果验证码大于现在的时间 那就是没有过期 如果小于 就是过期了

if($starttimedelete(array('inputtime'=>$data['inputtime']));
	        
	return_json(array('status'=>1,'message'=>'验证码已过期!'));
	        
}

验证码过期或者不正确都不能留着表里 所以在PHP执行完以后删除该验证码

九,都验证完成后 通过提交的token 查询当前的用户ID 没错 现在又可以往后查询

$member_authorization = D('member_authorization')->where(array('token'=>$data['token']))->find();

查询不到 那就是没有绑定公众号或者没有该用户

$member = D('member')->where(array('userid'=>$member_authorization['userid']))->find();

如果查询到了 那么就设置 缓存在本地

$_SESSION['_userid'] = $member['userid'];
    		    
$_SESSION['_username'] = $member['username'];
    			
set_cookie('_userid', $member['userid'], 0, true);
    			
set_cookie('_username', $member['username'], 0, true);
    			
set_cookie('_groupid', $member['groupid'], 0, true);	
    			
set_cookie('_nickname', $member['username']);

缓存设置完成后 就直接提示成功,并删除该验证码  提示如果缓存没有设置成功 那么你需要设置

new_session_start();

最后通过书写html代码以及js的交互把功能设置到前台即可

image.png

image.png

十,解绑 通过删除绑定的数据则解绑成功

if(!$_GET['authname']) return_json(array('status'=>1,'message'=>'解除绑定的类型不能为空!'));
	    
D('member_authorization')->delete(array('userid'=>$userid,'authname'=>$_GET['authname']));
	        
return_json(array('status'=>0,'message'=>'解除绑定成功!'));

总结

跳过了公众号的验证码独立的思路来实现登录 

如果你有好的思路可以和我一起探讨交流 

THE END
版权声明 1、本网站名称:黑猫查查网 - 查你所需,知你所想,资源分享平台
2、本站永久网址:https://www.hmccw.com
3、分享是一种美德,转载请保留原链接。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
文章不错?点个赞呗
点赞 0 赞赏 分享 收藏
评论 共 0 条

请登录后发表评论

暂无评论内容