帝国CMS 网站中集成 微信登录(SSO)-适配帝国 CMS8.0

该插件用于在 帝国CMS8.0 网站中集成 微信登录(SSO),免费,免费,免费。

演示:https://p.qfy.cn  我是小白一个,欢迎大家交流,如何大家觉得好我把演示站会员中心模板发出来,大家觉得好用给我点点赞吧。

下载链接:见本文末。

1. 插件功能:

(1)微信公众号/开放平台授权,在微信内(公众号环境)使用 snsapi_userinfo 授权获取用户信息;在 PC 端(微信扫码)使用微信开放平台授权登录。

(2)自动注册与登录:新用户自动注册并绑定微信 OpenID/UnionID,老用户匹配 OpenID/UnionID 自动登录。

(3)用户信息同步:自动同步微信头像、昵称至帝国CMS会员表,同时确保 ecms_enewsmemberadd 附加表有对应用户记录。

2.安全机制:一是采用 session_set_cookie_params() 控制 Cookie 安全性;二是避免 SQL 注入,建议升级至 参数化查询;三是处理 XSS 及非法输入,提升安全性。

3.插件只有一个单文件,应放置于 /sso/ 目录,文件组织如下:

/www/sites/c.npoc.cn/index/
├── e/                    # 帝国CMS核心目录
│   ├── class/
│   │   ├── connect.php
│   │   ├── db_sql.php
│   │   └── functions.php
│   └── member/
│       └── class/
│           ├── user.php             <-- 包含 eReturnDoUpRndf() 定义
│           └── member_loginfun.php  <-- 包含 qlogin() 等登录函数
└── sso/
└── wechatlogin.php              <-- 本插件文件,只有本文件一个单文件

4.配置方法:确保 ecms_wechat_set 表存在,并配置 appid、appsecret。


CREATE TABLE `ecms_wechat_set` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`type` VARCHAR(10) NOT NULL, -- 'mp' (公众号) / 'open' (开放平台)
`appid` VARCHAR(50) NOT NULL,
`appsecret` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`)
);


这是配置示例


INSERT INTO `ecms_wechat_set` (`type`, `appid`, `appsecret`)
VALUES ('mp', '你的公众号APPID', '你的公众号SECRET');
INSERT INTO `ecms_wechat_set` (`type`, `appid`, `appsecret`)
VALUES ('open', '你的开放平台APPID', '你的开放平台SECRET');


修改插件文件第31行,改成你的域名。
session_set_cookie_params(0, '/', '.qfy.cn', false, true); // 生产环境建议 secure=true

调试结束后,删除26-28行
// 开发阶段开启全部错误,生产环境请关闭错误显示或记录到日志
error_reporting(E_ALL & ~E_NOTICE);
ini_set('display_errors', 1);

5.在数据库ecms_enewsmember表增加3个字段,分别是微信 unionid、微信公众号 openid、开放平台 openid


ALTER TABLE ecms_enewsmember
ADD COLUMN unionid VARCHAR(100) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '微信 unionid',
ADD COLUMN openid_mp VARCHAR(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '微信公众号 openid',
ADD COLUMN openid_open VARCHAR(255) CHARACTER SET utf8mb3 COLLATE utf8mb3_general_ci DEFAULT NULL COMMENT '开放平台 openid';


说明:因为扫码登陆需要在开放平台注册,获取的是开放平台 openid,而公众号获取的是微信公众号 openid,需要使用微信 unionid将两个openid联系起来。以达到同一个微信号扫码登陆、静默登录,避免创建两个用户。

6.使用说明
PC 端扫码登录:在 PC 端(非微信内)时,以及公众号内访问 URL 触发登录,调用如下 URL 触发登录:
https://你的域名/sso/wechatlogin.php?redirect=回调地址
成功回调后,跳转 redirect 参数指定的页面,并携带 session 登录态。

7.首页调用示例
修改后台公共模板-JS调用登录模板,添加微信登陆链接。


<form name=login method=post action="[!--news.url--]e/member/doaction.php">
<input type=hidden name=enews value=login>
<input type=hidden name=ecmsfrom value=9>
用户名:<input name="username" type="text" class="inputText" size="16" />&nbsp;
密码:<input name="password" type="password" class="inputText" size="16" />&nbsp;
<input type="submit" name="Submit" value="登陆" class="inputSub" />&nbsp;
<input type="button" name="Submit2" value="注册" class="inputSub" onclick="window.open('[!--news.url--]e/member/register/');" />&nbsp; <a href=/sso/wechat_login.php><font color=ff0000>微信登陆</font></a>
</form>
[!--empirenews.template--]
&raquo;&nbsp;<font color=red><b>[!--username--]</b></font>&nbsp;&nbsp;<a href="[!--news.url--]e/member/my/" target="_parent">[!--groupname--]</a>&nbsp;[!--havemsg--]&nbsp;<a href="[!--news.url--]e/space/?userid=[!--userid--]" target=_blank>我的空间</a>&nbsp;&nbsp;<a href="[!--news.url--]e/member/msg/" target=_blank>短信息</a>&nbsp;&nbsp;<a href="[!--news.url--]e/member/fava/" target=_blank>收藏夹</a>&nbsp;&nbsp;<a href="[!--news.url--]e/member/cp/" target="_parent">控制面板</a>&nbsp;&nbsp;<a href="[!--news.url--]e/member/doaction.php?enews=exit&ecmsfrom=9" onclick="return confirm('确认要退出?');">退出</a>

 

转载自 帝国 CMS 官方社区 :http://bbs.phome.net/showthread-31-367538-0.html

帝国CMS 网站中集成 微信登录(SSO)-适配帝国 CMS8.0

已经回复?刷新
订阅评论
提醒
guest的头像

0 评论
内联反馈
查看所有评论
0
希望看到您的想法,请您发表评论x