该插件用于在 帝国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" /> 密码:<input name="password" type="password" class="inputText" size="16" /> <input type="submit" name="Submit" value="登陆" class="inputSub" /> <input type="button" name="Submit2" value="注册" class="inputSub" onclick="window.open('[!--news.url--]e/member/register/');" /> <a href=/sso/wechat_login.php><font color=ff0000>微信登陆</font></a> </form> [!--empirenews.template--] » <font color=red><b>[!--username--]</b></font> <a href="[!--news.url--]e/member/my/" target="_parent">[!--groupname--]</a> [!--havemsg--] <a href="[!--news.url--]e/space/?userid=[!--userid--]" target=_blank>我的空间</a> <a href="[!--news.url--]e/member/msg/" target=_blank>短信息</a> <a href="[!--news.url--]e/member/fava/" target=_blank>收藏夹</a> <a href="[!--news.url--]e/member/cp/" target="_parent">控制面板</a> <a href="[!--news.url--]e/member/doaction.php?enews=exit&ecmsfrom=9" onclick="return confirm('确认要退出?');">退出</a>
上传以下附件: [下载 *.zip](文件大小:5.74 KB,下载次数:10)
|