Discuz X2.0 调试应用通信的重要函数

从“通信失败”,找到这个信息的由来:

打开  ./control/admin/app.php 文件,找到 onping 方法,可以看到这个$status 等于1的时候会输出通信成功,除此之外输出通信失败,这样我们就可以设置好断点获取状态信息,顺藤摸瓜找到问题所在,源码如下:

function onping() {

		$ip = getgpc('ip');

		$url = getgpc('url');

		$appid = intval(getgpc('appid'));

		$app = $_ENV['app']->get_app_by_appid($appid);

		$status = '';

		if($app['extra']['apppath'] && @include 

			$app['extra']['apppath'].'./api/'.$app['apifilename']) {

			$uc_note = new uc_note();

			$status = $uc_note->test($note['getdata'], $note['postdata']);

		} else {

			$this->load('note');

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

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

		}



		if($status == '1') {

			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();';

		} else {

			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();';

		}



	}
在处理这个时候问题的时候,中间遇到点小问题当$status打印出来为1的时候,也是“通信失败”,找了半天发现是BOM的问题,在这里给大家提个醒,如果遇到类似问题可以用UltraEdit工具另存为文件(保存的时候可以通过配置选择是否添加 bom)

你可能感兴趣的:(discuz)