一、安装程序

1、安装 UCenter

这里没什么可以说的,就一路 Next 安装吧~~

2、安装 Discuz 7.2

这里也没什么可以说的,就一路 Next 安装吧~~

注意:这里要填写 UCenter 的 URL 地址,最后不要以 / 结尾。

附:这里可能是由于UCenter版本的问题,安装成功后会提示找不到 uc_pms

表,百度找到该表结构后直接执行SQL添加即可。

二、UCenter 应用的通信分析

1、登陆 UCenter 管理后台

查看【应用管理】,Discuz! 已经是通信成功

2、使用 Firebug 或者其它方法,查看【通信成功】标签下的 HTML 代码

得到一个 script 标签的代码,然后复制 src 属性的连接,如下:

admin.php?m=app&a=ping&inajax=1&url=http://os/comsenz/discuz&ip=&appid=1&random=3564&sid=0e5ey6uJA9qy1SG4wgjP2wJnUPLajMDeVZfikFG7hbAU+gKRhRO4RReiEC5/4WaxFYi/0zz4a2/pEw

复制代码

接上

UCenter 的 URL 组成完整的访问地址,通过浏览器直接访问该页面,页面内容如下:

document.getElementByIdx_x_x('status_4').innerHTML = "通信成功

";testlink();

复制代码

可知判断是否能够成功通信的关键在【admin.php】页面,并且通过

GET 方式传递数据。

3、打开 UCenter 目录下的admin.php

阅读代码,前面基本是定义一些常量,但在 32行处引入了几个文件,如下:

require

UC_ROOT.'model/base.php'; //

34行,后面会用到

require UC_ROOT.'model/admin.php';

复制代码

继续往下查看代码,发现:

$m = getgpc('m'); //

37行

$a = getgpc('a');

复制代码

(getpc

-- 用户自定义函数,获取 GET/POST/COOKIE的值)

到这里可以知道,$m

= 'app'和$a

= 'ping',也就是直接通过前面取得的

URL 传递过来的值。

继续往下看:

include UC_ROOT."control/admin/$m.php"; // 45行

$control = new control();

$method = 'on'.$a;

$control->$method(); // 48行

复制代码

嘿嘿,关键的地方了,这里加载了control/admin/app.php并且实例化,调用

onping() 方法。我们打开 app.php 文件继续深入查看。

4、查看 control/admin/app.php文件

通过前面的分析,我们已经知道他是调用 onping() 方法,直接定位到该方法(117行)。

在这里有一个 if-else 结构,调试后发现其执行 else 部分,代码如下:

$this->load('note'); //

127行

$url = $_ENV['note']->get_url_code('test', '',

$appid);

$status = $_ENV['app']->test_api($url,

$ip); //

app实例在control的构造函数中已实例化

复制代码

继续往下分析代码,知道关键的判断通信成功的条件为$status

== ‘1’,而

$status 是前面的 test_api() 方法返回的,因此,真正的核心就在此了。

这里通过 load() 方法加载了 note 模块,但是在当前的 control

类中根据没有该方法。

通过分析,知道 load() 方法在父类 base 中。(顺着继承找,在 admin.php

中包含的两个文件中能找到)。

分析 load() 方法,可知是根据传递的参数实例化 model/ 目录下的模型,并且直接通过 $_ENV

全局变量调用。

因此,$this->load('note'); 其实就是实例化 note 模型,并将对象存储在 $_ENV

全局数组。

5、查看 model/note.php文件

直接定位到 get_url_code() 方法,如下:

functionget_url_code($operation, $getdata, $appid) { … } //

208行

复制代码

分析代码,可知通过

$appid 获取相应的配置,加密传递的数据,

并通过 URL 的 code 参数传递数据,我们把 return 的内容改为 echo

一下,结果如下:

http://os/comsenz/discuz/api/uc.php?code=78e2xIlqskz4Nw2WbPBJOcvSftWkLC9JzzYa9nX/yPFhVQiPL6kFbUDGwpTV6PZakjxzuSYcQhs

复制代码

将返回的

$url 传递给 $_ENV['app']->test_api() 方法。让我们看看 test_api

究竟干了些什么。。。。

6、查看model/app.php 文件

直接定位到 test_api() 方法,如下:

function test_api($url, $ip = '') { …

} // 79行

复制代码

分析代码,可知实例化

model/misc.php文件中的 misc 模型,并调用 dfopen() 方法,

按 $url 路径和远端程序建立 socket 连接进行通信的,而通过 $url

知道远端的接收页面为:

http://os/comsenz/discuz/api/uc.php

复制代码

因此,我们只需要在远端程序建立

api/uc.php 页面,并使其在页面输出一个1,即可判断应用通信成功。

注:暂时先分析到这里,传递过来的 code参数的数据下回再继续分析。

三、验证应用的通信方法

1、在 UCenter 同一级目录下新建:myapp/api/uc.php

2、uc.php 的代码为:

复制代码

3、在

UCenter 中添加新应用(名称、URL、最后两个都选“是”,其它为空)

4、呵呵,myapp新应用通信成功。

后话:

简单的通信分析到这里结束了,第一回写这样的文章,希望不会太差~~~

下回再继续分析传递过来的 code 参数的应用。

ucenter base.php,UCenter之应用通信分析(一)相关推荐

  1. 简单两步解决UCenter忘记创始人UCenter Administrator密码

    UCenter Administrator是UCenter的创始人密码,我们一般都用管理员身份登录,所以创始人密码就容易忘记了!前几天我想用创始人身份进入,突然发现已经忘记密码,下面来说一个很简单的方 ...

  2. 应用程序Activity窗口与WMS、AMS的通信分析(Android Q)

    应用程序Activity窗口与WMS.AMS的通信分析 Activity 组件在其窗口创建完成后,就会请求与 WindowManagerService(WMS)建立连接,WMS 会为其新增一个 Win ...

  3. php ucenter,单点登录 Ucenter示例分析

    首先我们先来了解下Ucenter登录步骤 1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和passwo ...

  4. ucenter base.php,phpcms整合ucenter问题集

    1.整合 UCenter 后,Discuz! 注册会员在 phpcms 中为什么不显示昵称? 答:这是因为 Discuz! 只有"用户名",没有"昵称"的概念. ...

  5. php ucenter单点登录,UCenter的应用整合与单点登录分析

    一直在用康盛的产品,自然少不了单点登陆,最近重新研究了下ucenter的机制,其实它的基本原理就一句话:跨域设置用户信息.下面只对用户登陆做比较详细说明,其他注册.PM等操作其实原理差不多. 用户登陆 ...

  6. ucenter php 安装,UCenter 1.6.0 安装过程

    首先下载Ucenter最新版 下载页面: http://www.comsenz.com/downloads/install/ucenter 直接下载地址: http://download.comsen ...

  7. ucenter api php,UCenter API使用入门

    如果你写了一个WEB程序,你又想与ucenter共用一个用户库,你会怎么做? 来吧,让我告诉你,只要几个简单的步骤就行了. 1.先到ucenter administrator建一个应用,在应用里配置完 ...

  8. nrf51822-主从通信分析1

    建议看该教程前,先看一下  简单扫描器实现  教程 讲解基于sdk目录下central中的两个例子. 关于主机的程序框架其实和从机都是一样的,都是基于事件驱动的框架. Main函数中完成初始化, 从机 ...

  9. 一个udp用户数据报的数据字段为8192_基于FPGA的千兆网UDP通信分析

    千兆网UDP通信 以太网帧格式 图8‑12 以太网帧格式 表8‑5 以太网帧格式说明 UDP协议分析 为什么UDP协议在FPGA实现时很受欢迎,最主要一个原因就是简单,简答到什么地步呢?UDP协议只是 ...

最新文章

  1. 为你分享10篇NLP、CV领域优质论文
  2. 饿了么口碑活跃用户增长近美团3倍,2020年行业竞争局势将扭转?
  3. 计算机相关冷门专业,211名校冷门专业和双非计算机专业,该如何选择?过来人告诉你...
  4. 欧几里得空间——正交矩阵
  5. NLP分析小说人物关系,找找主人公的真爱。
  6. 65.4. Other GUI - phpOraAdmin
  7. 在Spring中使用jOOQ:CRUD
  8. Ext-ajax请求数据
  9. eclipse下properties配置文件中文乱码解决
  10. 基于DWM1000的UWB测距调试(一)
  11. 计算机应用维护师实习周记,计算机系统维护专业毕业实习周记
  12. MCP3421高精度ADC转换器
  13. 基于SSM的毕业生就业管理系统设计与实现 Java mysql
  14. 神器推荐:应用之星,零代码就能制作炫酷的H5页面
  15. 企业为何都用电子招投标 现代电子招投标系统介绍
  16. 35岁的网络工程师入行需要注意什么?
  17. 【轉】一個在台積電工作3年的工程師寫給學弟學妹們的信
  18. 计算机课件制作教程ppt,电脑制作ppt详细步骤_新手制作ppt详细步骤图文教程
  19. openpyxl版本问题
  20. java 围棋算法_求java围棋提子算法

热门文章

  1. chrome浏览器书签
  2. js数组遍历方法及其区别
  3. 校园二手管理平台-SRS分析
  4. 8.7 Oracle(版本19c)下载安装教程-保姆级
  5. funannotate安装
  6. 第一课——进制转换学习实例
  7. HTTP Live Streaming服务器的搭建
  8. 平板电脑 android系统升级,【重磅升级】开源平板电脑(FSPAD-733)升级至Andriod6.0系统...
  9. pytorch repeat使用
  10. android 音乐播放器论文,Android音乐播放器论文-Android文档类资源