discuz论坛手机短信验证码登录和企业微信登录源码

根据项目需求需要对discuz!3.4版本进行升级短信验证码登录和企业微信内容部绑定登录进行二次开发。
大概看了下官方手册,但是不太完善,基本都是介绍字段和数据字典说明。搜了一圈也没找到一个合适的开发手册。只好自己分析吧应该也不太难。
首先到登录页面查看登录地址,并根据地址查找想对应的程序处理文件,不断设定短点,日志进行分析……
1、首先discuz登录处理机制看下涉及的文件 如下:
入口文件路径:/source/module/member/member_logging.php

if(!defined('IN_DISCUZ')) {
	exit('Access Denied');
}
define('NOROBOT', TRUE);
//判断接受的处理程序入口是否在数组里面
//为了和系统内置登录处理做区分,在此处增加了 mlogin 方便手机验证模式登录
if(!in_array($_GET['action'], array('login', 'logout','mlogin'))) {
	showmessage('undefined_action');
}
$ctl_obj = new logging_ctl();//初始化类 此处为/source/class/class_member.php文件
$ctl_obj->setting = $_G['setting'];
$method = 'on_'.$_GET['action'];//此处是调用对应的处理函数程序 前缀是 on_
$ctl_obj->template = 'member/login';
$ctl_obj->$method();
?>

2、入口文件处理好后,需要找到对应的class处理类
/source/class/class_member.php
打开此文件里面有原始登录处理函数 on_login,进行分析克隆新增加的处理函数 on_mlogin 这里只列出核心代码,其它的和on_login处理一致

function on_mlogin(){
global $_G;
if($_G['uid']) {
	$referer = dreferer();
	$ucsynlogin = $this->setting['allowsynlogin'] ? uc_user_synlogin($_G['uid']) : '';
	$param = array('username' => $_G['member']['username'], 'usergroup' => $_G['group']['grouptitle'], 'uid' => $_G['member']['uid']);
}
$_G['uid'] = $_G['member']['uid'] = 0;
$_G['mobile'] = $_G['member']['mobile'];//模板增加表单字段mobile
if(!$_GET['mobile'] || $_GET['mobilecode'] != $_SESSION['mobile_rand']) {
	showmessage('手机号或短信验证码不正确');//模板增加获取验证码字段
}
$user = DB::fetch_first("SELECT * FROM ".UC_DBTABLEPRE."members WHERE mobile=".$_GET['mobile']."");//查询手机号是否存在
$result = userlogin($user['username'], $user['password'], $user['questionid'], $user['answer'], 'mobile', $_G['clientip']);//登录处理
}

企业微信登录处理程序也是在此文件中进行处理,建立企业微信登录接口类,然后引入到此类中即可,然后在登录处理函数里面进行判断 获取企业微信 access_token 和用户详细资料如:姓名、手机号、电话、头像、二维码。具体过程就不写了,查下企业微信开发手册即可
获取到的格式如下:

Array
(
    [errcode] => 0
    [errmsg] => ok
    [userid] => 180********
    [name] => 张三
    [mobile] => 180********
    [gender] => 1
    [email] => 
    [avatar] => https://wework.qpic.cn/bizmail/pL4WSooE………………
    [qr_code] => https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=vc0694a1……
    [access_token] => wo6vtC6gZtFItH1Q9nS5zv……………………
)

个人网站:www.hncaobang.com

你可能感兴趣的:(php,html5,mysql)