Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

x2 uc通信过程分析

[复制链接]
evenzhou 发表于 2011-6-29 22:54:07 | 显示全部楼层 |阅读模式
本帖最后由 evenzhou 于 2011-6-29 22:55 编辑

首先打开模版uc_server/view/default/admin_app.htm
找到
  1. <script id="link_$app[appid]" testlink="admin.php?m=app&a=ping&inajax=1&url={eval echo urlencode($app['url']);}&ip={eval echo urlencode($app['ip']);}&appid=$app[appid]&random={eval echo rand()}"></script>
复制代码

打开:uc_server\control\admin\app.php
其中处理通信的函数为 onping()

  1. function onping() {
  2. $ip = getgpc('ip');
  3. $url = getgpc('url');
  4. $appid = intval(getgpc('appid'));
  5. $app = $_ENV['app']->get_app_by_appid($appid);
  6. $status = '';
  7. if($app['extra']['apppath'] && @include $app['extra']['apppath'].'./api/'.$app['apifilename']) {
  8. $uc_note = new uc_note();
  9. $status = $uc_note->test($note['getdata'], $note['postdata']);
  10. } else {
  11. $this->load('note');
  12. $url = $_ENV['note']->get_url_code('test', '', $appid);
  13. $status = $_ENV['app']->test_api($url, $ip);
  14. }
  15. if($status == '1') {
  16. echo 'document.getElementById(\'status_'.$appid.'\').innerHTML = "<img src=\'images/correct.gif\' border=\'0\' class=\'statimg\' \/><span class=\'green\'>'.$this->lang['app_connent_ok'].'</span>";testlink();';
  17. } else {
  18. echo 'document.getElementById(\'status_'.$appid.'\').innerHTML = "<img src=\'images/error.gif\' border=\'0\' class=\'statimg\' \/><span class=\'red\'>'.$this->lang['app_connent_false'].'</span>";testlink();';
  19. }
  20. }
复制代码
首先如果设置应用的物理路径(填写方式,如:http://localhost/x2/),则不用判断服务器是否开启了fsockopen,否则 需要判断fsockopen函数是否存在,下面来分析下 通信的测试的具体流程:
在onping函数中我们发现 test_api函数是关键,打开:uc_server/model/app.php
  1. function test_api($url, $ip = '') {
  2.                 $this->base->load('misc');
  3.                 if(!$ip) {
  4.                         $ip = $_ENV['misc']->get_host_by_url($url);
  5.                 }
  6.                 if($ip < 0) {
  7.                         return FALSE;
  8.                 }
  9.                 return $_ENV['misc']->dfopen($url, 0, '', '', 1, $ip);
  10.         }
复制代码
这段代码中调用的dfopen()函数:uc_server/model/misc.php
如果fsockopen函数不支持则直接返回 return '' ,否则按照流程执行并返回$return,最终 $status = $_ENV['app']->test_api($url, $ip);得到$status的值,进行判断是否为1,如果为1则通信成功,否则,通信失败

pcyi 发表于 2011-6-30 11:59:39 | 显示全部楼层
支持!
回复

使用道具 举报

ARCHY` 发表于 2011-7-1 01:03:55 | 显示全部楼层
支持
回复

使用道具 举报

yuangl 发表于 2011-8-30 15:12:25 | 显示全部楼层
{:soso__3359477208668719343_3:}
回复

使用道具 举报

xiduos.com 发表于 2011-10-16 16:29:13 | 显示全部楼层
请问通信失败,怎么解决呢???谢谢,急求啊
回复

使用道具 举报

 楼主| evenzhou 发表于 2011-10-17 09:52:33 | 显示全部楼层
本帖最后由 evenzhou 于 2011-10-17 09:52 编辑
xiduos.com 发表于 2011-10-16 16:29
请问通信失败,怎么解决呢???谢谢,急求啊

通信失败,论坛上有很多教程
您先搜索下  faq.comsenz.com中有帮助文档
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-4-25 14:22 , Processed in 0.669611 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表