帝国论坛帝国网站管理系统交流区模板/标签/插件共享交流[原创]帝国CMS 网站中集成 微信登录(SSO) 【本版专题贴子】  
主题:[原创]帝国CMS 网站中集成 微信登录(SSO) [加入收藏夹]   

jiuyue
用户头衔:秀才 *

精华贴   :0
发贴数   :30
经验值   :516
注册时间:2010-04-26
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
[原创]帝国CMS 网站中集成 微信登录(SSO)
该插件用于在 帝国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>




上传以下附件:
[下载 *.zip](文件大小:5.74 KB,下载次数:10)

[该贴被修改 1 次,最后修改时间 2025-02-09 11:01:37 ]



2025-02-09 10:56:37 已设置保密 顶部 回复 引用 报告 编辑 删除

bruce_zhou
用户头衔:举人

精华贴   :0
发贴数   :70
经验值   :780
注册时间:2013-08-30
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

非常不错啊



电脑知识
2025-02-09 19:40:04 已设置保密 顶部 回复 引用 报告 编辑 删除

bruce_zhou
用户头衔:举人

精华贴   :0
发贴数   :70
经验值   :780
注册时间:2013-08-30
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

演示站会员中心模板好像不是很完善哦



电脑知识
2025-02-09 19:42:14 已设置保密 顶部 回复 引用 报告 编辑 删除

m8hwj7
用户头衔:举人

精华贴   :0
发贴数   :457
经验值   :1347
注册时间:2015-12-08
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

支持




2025-02-09 20:02:54 已设置保密 顶部 回复 引用 报告 编辑 删除

jiuyue
用户头衔:秀才 *

精华贴   :0
发贴数   :30
经验值   :516
注册时间:2010-04-26
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

谢谢指出!




2025-02-10 18:42:26 已设置保密 顶部 回复 引用 报告 编辑 删除

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1