ucenter base.php,UCenter之应用通信分析(一)
一、安装程序
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之应用通信分析(一)相关推荐
- 简单两步解决UCenter忘记创始人UCenter Administrator密码
UCenter Administrator是UCenter的创始人密码,我们一般都用管理员身份登录,所以创始人密码就容易忘记了!前几天我想用创始人身份进入,突然发现已经忘记密码,下面来说一个很简单的方 ...
- 应用程序Activity窗口与WMS、AMS的通信分析(Android Q)
应用程序Activity窗口与WMS.AMS的通信分析 Activity 组件在其窗口创建完成后,就会请求与 WindowManagerService(WMS)建立连接,WMS 会为其新增一个 Win ...
- php ucenter,单点登录 Ucenter示例分析
首先我们先来了解下Ucenter登录步骤 1.用户登录discuz,通过logging.php文件中的函数uc_user_login对post过来的数据进行验证,也就是对username和passwo ...
- ucenter base.php,phpcms整合ucenter问题集
1.整合 UCenter 后,Discuz! 注册会员在 phpcms 中为什么不显示昵称? 答:这是因为 Discuz! 只有"用户名",没有"昵称"的概念. ...
- php ucenter单点登录,UCenter的应用整合与单点登录分析
一直在用康盛的产品,自然少不了单点登陆,最近重新研究了下ucenter的机制,其实它的基本原理就一句话:跨域设置用户信息.下面只对用户登陆做比较详细说明,其他注册.PM等操作其实原理差不多. 用户登陆 ...
- ucenter php 安装,UCenter 1.6.0 安装过程
首先下载Ucenter最新版 下载页面: http://www.comsenz.com/downloads/install/ucenter 直接下载地址: http://download.comsen ...
- ucenter api php,UCenter API使用入门
如果你写了一个WEB程序,你又想与ucenter共用一个用户库,你会怎么做? 来吧,让我告诉你,只要几个简单的步骤就行了. 1.先到ucenter administrator建一个应用,在应用里配置完 ...
- nrf51822-主从通信分析1
建议看该教程前,先看一下 简单扫描器实现 教程 讲解基于sdk目录下central中的两个例子. 关于主机的程序框架其实和从机都是一样的,都是基于事件驱动的框架. Main函数中完成初始化, 从机 ...
- 一个udp用户数据报的数据字段为8192_基于FPGA的千兆网UDP通信分析
千兆网UDP通信 以太网帧格式 图8‑12 以太网帧格式 表8‑5 以太网帧格式说明 UDP协议分析 为什么UDP协议在FPGA实现时很受欢迎,最主要一个原因就是简单,简答到什么地步呢?UDP协议只是 ...
最新文章
- 为你分享10篇NLP、CV领域优质论文
- 饿了么口碑活跃用户增长近美团3倍,2020年行业竞争局势将扭转?
- 计算机相关冷门专业,211名校冷门专业和双非计算机专业,该如何选择?过来人告诉你...
- 欧几里得空间——正交矩阵
- NLP分析小说人物关系,找找主人公的真爱。
- 65.4. Other GUI - phpOraAdmin
- 在Spring中使用jOOQ:CRUD
- Ext-ajax请求数据
- eclipse下properties配置文件中文乱码解决
- 基于DWM1000的UWB测距调试(一)
- 计算机应用维护师实习周记,计算机系统维护专业毕业实习周记
- MCP3421高精度ADC转换器
- 基于SSM的毕业生就业管理系统设计与实现 Java mysql
- 神器推荐:应用之星,零代码就能制作炫酷的H5页面
- 企业为何都用电子招投标 现代电子招投标系统介绍
- 35岁的网络工程师入行需要注意什么?
- 【轉】一個在台積電工作3年的工程師寫給學弟學妹們的信
- 计算机课件制作教程ppt,电脑制作ppt详细步骤_新手制作ppt详细步骤图文教程
- openpyxl版本问题
- java 围棋算法_求java围棋提子算法