首页 后端开发 php教程 Discuz & UCenter 修改手记 - 2014.12.19

Discuz & UCenter 修改手记 - 2014.12.19

Aug 08, 2016 am 09:32 AM
bbs discuz email

最近在整JAVA和UCENTER的东西,受限于项目架构需要,无法完全以UCENTER为中心,所以在对接过程中遇到了许多不愉快的事情。经历多番研究,终于解决了其中了两个大问题,现记录下来,以备日后查看。

一、解决email必须填写的问题

项目并不要求用户注册时填写email,但UCENTER API要求必须输入email才可以通过验证,不得已必须得修改UCENTER代码才能绕过。以下是改动的代码:

/uc_server/control/user.php 69行:

1

2

3

<span>1</span> <span>//</span><span> NOTE: 解决email必须填写的问题

</span><span>2</span> <span>//if(($status = $this-&gt;_check_email($email)) <span>3</span> <span>//    return $status;

</span><span>4</span> <span>//}</span></span>

登录后复制

二、解决用户必须手工登录1次论坛的问题

由于BBS屏蔽了DISCUZ自带的注册、登录、找密等操作,所以必须要实现单点登录。当中遇到了一个非常蛋疼的问题:主站注册的账户同步到UCENTER之后,UCENTER并不会通知其他应用,也就是说默认情况下,其他应用(包括DISCUZ在内)无法在新用户注册之后立即更新用户列表。细细研究之后发现,DISCUZ是在本地注册、登录等事件中才会与UCENTER同步。这导致了,在主站新注册的用户,无法在BBS单点登录成功——因为在BBS中根本不存在这个用户。解决的方法有两个,一是用户手工登录一次BBS,BBS自带的机制会自动将用户信息从UCENTER同步过来;二是修改DISCUZ系统代码,在单点登录请求时自动同步用户数据。在权衡了各方面因素之后,决定采用第二套方案。以下是改动的代码:

/api/uc.php 192行:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

<span> 1</span> <span>//</span><span> NOTE 解决用户必须手工登录1次论坛的问题</span>

<span> 2</span> <span>$member</span> = getuserbyuid(<span>$uid</span>, 1<span>);

</span><span> 3</span>

<span> 4</span> <span>if</span> (!<span>$member</span><span>) {

</span><span> 5</span>     <span>$init_arr</span> = <span>explode</span>(',', <span>$_G</span>['initcredits'<span>]);

</span><span> 6</span>     <span>$groupid</span> = <span>$_G</span>['regverify'] ? 8 : <span>$_G</span>['newusergroupid'<span>];

</span><span> 7</span>

<span> 8</span>     C::t('common_member')-&gt;insert(<span>$uid</span>, <span>$get</span>['username'], <span>md5</span>(random(10)), <span>$get</span>['email'], <span>$_G</span>['clientip'], <span>$groupid</span>, <span>$init_arr</span><span>);

</span><span> 9</span>

<span>10</span>     <span>$member</span> = getuserbyuid(<span>$uid</span>, 1<span>);

</span><span>11</span> <span>}

</span><span>12</span>

<span>13</span> <span>if</span>(<span>$member</span><span>) {

</span><span>14</span>     dsetcookie('auth', authcode("<span>$member</span>[password]\t<span>$member</span>[uid]", 'ENCODE'), <span>$cookietime</span><span>);

</span><span>15</span> }

登录后复制

以上就介绍了Discuz & UCenter 修改手记 - 2014.12.19,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章

仓库:如何复兴队友
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 周前 By 尊渡假赌尊渡假赌尊渡假赌

热门文章标签

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

Discuz后台登录问题解决方法大揭秘 Discuz后台登录问题解决方法大揭秘 Mar 03, 2024 am 08:57 AM

Discuz后台登录问题解决方法大揭秘

什么是Discuz?Discuz的定义和功能介绍 什么是Discuz?Discuz的定义和功能介绍 Mar 03, 2024 am 10:33 AM

什么是Discuz?Discuz的定义和功能介绍

Discuz用户必备!改名道具全面解析! Discuz用户必备!改名道具全面解析! Mar 12, 2024 pm 10:15 PM

Discuz用户必备!改名道具全面解析!

bbs指的是什么意思 bbs指的是什么意思 Mar 06, 2024 pm 04:14 PM

bbs指的是什么意思

遇到 Discuz 密码错误怎么办?快速解决方案分享! 遇到 Discuz 密码错误怎么办?快速解决方案分享! Mar 03, 2024 am 09:33 AM

遇到 Discuz 密码错误怎么办?快速解决方案分享!

Discuz注册流程详解:让您轻松修改个人信息 Discuz注册流程详解:让您轻松修改个人信息 Mar 13, 2024 pm 12:21 PM

Discuz注册流程详解:让您轻松修改个人信息

Discuz域名修改操作指南 Discuz域名修改操作指南 Mar 09, 2024 pm 04:36 PM

Discuz域名修改操作指南

Discuz后台登录失败?教你轻松解决! Discuz后台登录失败?教你轻松解决! Mar 02, 2024 pm 06:03 PM

Discuz后台登录失败?教你轻松解决!

See all articles