龙空技术网

phpcms小程序插件升级到4.3.3对接会员中心及打通phpsso

腾石建站 137

前言:

此刻朋友们对“ssophp”都比较关心,同学们都想要知道一些“ssophp”的相关文章。那么小编也在网络上收集了一些对于“ssophp””的相关资讯,希望姐妹们能喜欢,看官们一起来了解一下吧!

【重磅升级】phpcms小程序插件升级到4.3.4,打通phpcms会员中心与phpsso,小程序实现一键授权登录

(1)重构get_user.php接口,对接phpcms会员中心和phpsso

(2)新增接口文件member.php,所有与会员有关接口都通过该文件获取,获取方式为action=favorite,....

1、action=member:表示获取用户信息

2、action=updatemember:更新用户信息

3、action=favorite :获取收藏信息

4、action=mypublish : 获取我的投稿

5、action=publish:投稿(暂未发布)

6、action=group:获取分组信息

(3)微信小程序demo新增文件member,其中包含:auth、favorite、index,header、publish、personal等

(4)修复其他已知bug

注意:用于该版本打通phpsso,所以需要对phpcms程序源码做部分修改,具体修改教程请参考:升级教程

修改代码比较多,如果没有基础慎重

用于sso的原因,所以phpcms上线这么久一直没有去打通会员中心,最近开始正好会员中心,才发现v9的设计有很多坑爹之处,造成很多会员的东西无法第三方调用,比如收藏模块,数据库没有存储栏目id和文章id,这就造成我们无法在小程序端获取对应的url;还有会员名称问题,v9是不允许有重复名字的,但是微信用户可有很多重名的,所以这些问题都需要修改相关代码

具体修改

一、给favorite添加文章id和栏目id

(1)给v9_favorite新增字段fid,存储d-catid-id 否则小程序端无法确定url;

(2)打开api文件夹下的add_favorite.php第18行if判断后边添加代码:

if($_GET['catid'] && $_GET['id']) {

$catid = intval($_GET['catid']);

$fid = 'f-'.$catid.'-'.intval($_GET['id']);

}else{

exit('-2');

}

然后找到代码:

$data = array('title'=>$title, 'url'=>$url, 'adddate'=>SYS_TIME, 'userid'=>$userid);

改成:

$data = array('title'=>$title, 'url'=>$url, 'adddate'=>SYS_TIME, 'userid'=>$userid,'fid' => $fid);

(3)找到所有的show.html模板的

function add_favorite(title) {

$.getJSON('{APP_PATH}api.php?op=add_favorite&title='+encodeURIComponent(title)+'&url='+encodeURIComponent(location.href)+'&'+Math.random()+'&callback=?', function(data){

if(data.status==1) {

$("#favorite").html('收藏成功');

} else {

alert('请登录');

}

});

}

改成:

function add_favorite(title) {

$.getJSON('{APP_PATH}api.php?op=add_favorite&title='+encodeURIComponent(title)+'&url='+encodeURIComponent(location.href)+'&id={$id}&catid={$catid}&'+Math.random()+'&callback=?', function(data){

if(data.status==1) {

$("#favorite").html('收藏成功');

} else {

alert('请登录');

}

});

}

即在链接中添加&id={$id}&catid={$catid},用于传递id和catid

(之前用户添加的收藏文章,再小程序端可以读取,但是无法匹配到对应url)

二、修改v9_content_check表,新增字段userid用于存储用户id,以实现小程序端调用

(1)给v9_content_check表新增字段userid;

(2)打开phpcms/model/content_model.class.php大概127行在代码:

$this->content_check_db = pc_base::load_model('content_check_model');

后边新增判断,判断是否传递了 userid字段,没有默认0

if(!array_key_exists("userid",$data)){

$data['userid'] = '0';

}

然后紧接着的$check_data改成(增加userid)

$check_data = array(

'checkid'=>'c-'.$id.'-'.$modelid,

'catid'=>$systeminfo['catid'],

'siteid'=>$this->siteid,

'title'=>$systeminfo['title'],

'username'=>$systeminfo['username'],

'inputtime'=>$systeminfo['inputtime'],

'status'=>$data['status'],

'userid'=>$data['userid'],

);

(3)找到代码phpcms/modules/member/content.php第78行附近找到代码:

$info['username'] = $memberinfo['username'];

下边新增代码:

$info['userid'] = $memberinfo['userid'];

这样小程序端即可通过userid来读取投稿文章(官方默认的是通过username即用户名来读取该用户文章的,这样也可以,但是前提是不允许用户修改名字,感觉比较扯淡,所以不建议 通过username读取)

三、官方注册账号是不允许用户名重复的,但是微信用户名称是有重复情况的,如果不做判断会造成混乱,有两种思路

(1)给重复用户的名称后边加四位随机数:比如:腾石2325,石头2020,目前我采用的是这种方式,在接口get_user.php里边会做个判断,一旦重复后边添加随机数字

(2)修改官方源码,允许用户名重复;此时你需要

01、修改v9_member数据库username的索引类型问题,去修改该表的Unique改成normal;这样允许重复名称

02、修改member下的index.php的名字重复校验和sso下的名字重复校验

03、在登录框添加选择:普通用户/小程序用户

总之这种方式比较麻烦,慎重考虑

其他说明:

(1)和username类似,v9也不允许email为空和重复,为了需要,接口文件我随机分配一个邮箱给用户,格式为:default_时间戳@tengcee.com,可以自己随意修改

(2)用户的默认密码都是:000000,授权成之后请要求立即修改(也可以把密码设置为随机密码,反正小程序端用户登录是直接授权登录的,不需要密码)

(3)目前暂不支持文章投稿功能

(4)手机号一键登录功能 用于小程序官方返回信息太少,只有一个手机号,所以暂不考虑手机登录

标签: #ssophp