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

【重磅升级】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判断后边添加代码:

  1. if($_GET['catid'] && $_GET['id']) { 
  2.         $catid = intval($_GET['catid']); 
  3.         $fid = 'f-'.$catid.'-'.intval($_GET['id']); 
  4.     }else{ 
  5.         exit('-2');  
  6.     } 

然后找到代码:

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

改成:

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

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

  1. function add_favorite(title) { 
  2.         $.getJSON('{APP_PATH}api.php?op=add_favorite&title='+encodeURIComponent(title)+'&url='+encodeURIComponent(location.href)+'&'+Math.random()+'&callback=?', function(data){ 
  3.             if(data.status==1)  { 
  4.                 $("#favorite").html('收藏成功'); 
  5.             } else { 
  6.                 alert('请登录'); 
  7.             } 
  8.         }); 
  9.     } 

改成:

  1. function add_favorite(title) { 
  2.         $.getJSON('{APP_PATH}api.php?op=add_favorite&title='+encodeURIComponent(title)+'&url='+encodeURIComponent(location.href)+'&id={$id}&catid={$catid}&'+Math.random()+'&callback=?', function(data){ 
  3.             if(data.status==1)  { 
  4.                 $("#favorite").html('收藏成功'); 
  5.             } else { 
  6.                 alert('请登录'); 
  7.             } 
  8.         }); 
  9.     } 

即在链接中添加&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行在代码:

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

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

  1. if(!array_key_exists("userid",$data)){ 
  2.                 $data['userid'] = '0'; 
  3.             } 

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

  1. $check_data = array( 
  2.                 'checkid'=>'c-'.$id.'-'.$modelid, 
  3.                 'catid'=>$systeminfo['catid'], 
  4.                 'siteid'=>$this->siteid, 
  5.                 'title'=>$systeminfo['title'], 
  6.                 'username'=>$systeminfo['username'], 
  7.                 'inputtime'=>$systeminfo['inputtime'], 
  8.                 'status'=>$data['status'], 
  9.                 'userid'=>$data['userid'], 
  10.                 ); 

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

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

下边新增代码:

  1. $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)手机号一键登录功能 用于小程序官方返回信息太少,只有一个手机号,所以暂不考虑手机登录

 

你可能感兴趣的:(微信小程序,phpcms,php)