Home  >  Article  >  Backend Development  >  关于ucenter通讯过程的代码的!CSDN大神多!慕名而来!请多指教

关于ucenter通讯过程的代码的!CSDN大神多!慕名而来!请多指教

WBOY
WBOYOriginal
2016-06-13 11:58:30759browse

关于ucenter通讯过程的代码的求助!CSDN大神多!慕名而来!请多指教!
调试ucenter的时候在/control/admin/app.php中遇到了这样一段代码
if($app['extra']['apppath'] && @include $app['extra']['apppath'].'./api/'.$app['apifilename'])
{
//code
}
请问 这个if 后面 include 进来的文件 是执行的结果还是文件本身,还是仅仅返回一个ture or false?
include 进来的是一个.php的文件。
分割线----------------------------------------------------------------------------------------------------------------
运行下面这个文件中的 onping函数

<br /><br /><?php<br /><br />	function onping() {<br />		$ip = getgpc('ip');<br />		$url = getgpc('url');<br />		$appid = intval(getgpc('appid'));<br />		$app = $_ENV['app']->get_app_by_appid($appid);<br />		$status = '';<br />		if($app['extra']['apppath'] && @include $app['extra']['apppath'].'./api/'.$app['apifilename']) {<br />			echo 'in if='.$app['extra']['apppath'].'./api/'.$app['apifilename'];<br />			$uc_note = new uc_note();<br />			$status = $uc_note->test($note['getdata'], $note['postdata']);<br />		} else {<br />			echo 'in else';<br />			$this->load('note');<br />			$url = $_ENV['note']->get_url_code('test', '', $appid);<br />			$status = $_ENV['app']->test_api($url, $ip);<br />		}<br />		if($status == '1') {<br />			echo 'document.getElementById(\'status_'.$appid.'\').innerHTML = "<img  src=\'images/correct.gif\' border=\'0\' class=\'statimg\' \/ alt="关于ucenter通讯过程的代码的!CSDN大神多!慕名而来!请多指教" ><span class=\'green\'>'.$this->lang['app_connent_ok'].'</span>";testlink();';<br />		} else {<br />			echo 'document.getElementById(\'status_'.$appid.'\').innerHTML = "<img  src=\'images/error.gif\' border=\'0\' class=\'statimg\' \/ alt="关于ucenter通讯过程的代码的!CSDN大神多!慕名而来!请多指教" ><span class=\'red\'>'.$this->lang['app_connent_false'].'</span>";testlink();';<br />		}<br /><br />	}<br /><br />?><br /><br />


其中include $app['extra']['apppath'].'./api/'.$app['apifilename'] 这个文件是 其他目录里面的 uc.php文件,前部代码如下!这个文件是utf8版的HDwiki5.1自带的!

<br /><br /><?php<br />error_reporting(0);<br /><br />define('UC_CLIENT_VERSION', '1.5.1');<br />define('UC_CLIENT_RELEASE', '20100501');<br /><br />define('API_DELETEUSER', 1);			//用户删除 API<br />define('API_RENAMEUSER', 1);            //用户改名 API<br />define('API_GETTAG', 1);                //获取标签 API<br />define('API_SYNLOGIN', 1);              //同步登录 API<br />define('API_SYNLOGOUT', 1);             //同步登出 API<br />define('API_UPDATEPW', 1);              //更改用户密码<br />define('API_UPDATEBADWORDS', 1);        //更新关键字列表<br />define('API_UPDATEHOSTS', 1);           //更新域名解析缓存<br />define('API_UPDATEAPPS', 1);            //更新应用列表<br />define('API_UPDATECLIENT', 1);          //更新客户端缓存<br />define('API_UPDATECREDIT', 1);          //更新用户积分<br />define('API_GETCREDITSETTINGS', 1);     //向 UCenter 提供积分设置<br />define('API_GETCREDIT', 1);             //获取用户的某项积分<br />define('API_UPDATECREDITSETTINGS', 1);  //积分设置<br /><br />define('API_RETURN_SUCCEED', '1');<br />define('API_RETURN_FAILED', '-1');<br />define('API_RETURN_FORBIDDEN', '-2');<br /><br />define('HDWIKI_ROOT', substr(dirname(__FILE__),0,-4));<br />define('UC_CLIENT_ROOT',HDWIKI_ROOT.'/api/uc_client/');<br />define('MAGIC_QUOTES_GPC', get_magic_quotes_gpc());<br /><br />require_once HDWIKI_ROOT.'/api/ucconfig.inc.php';<br /><br />$get = $post = array();<br />$code = @$_GET['code'];<br />parse_str(authcode($code, 'DECODE', UC_KEY), $get);<br />if(MAGIC_QUOTES_GPC) {<br />	$get = _stripslashes($get);<br />}<br />$timestamp = time();<br />if(empty($get)){<br />	exit('Invalid Request');<br />}elseif($timestamp - $get['time'] > 3600){<br />	exit('Authracation has expiried');<br />}<br /><br /><br />


那为什么输出了一个'Invalid Request 呢?这个输出结果对吗?
------解决方案--------------------
对于 @include $app['extra']['apppath'].'./api/'.$app['apifilename']
当文件 $app['extra']['apppath'].'./api/'.$app['apifilename'] 不存在时,反对 false
存在时返回 1
这种写法完全没有问题!

如果你的程序出现了问题,请在其他的地方找原因
------解决方案--------------------
include 进来的肯定是有内容的了,从你贴出的片段不也能看到很多定义吗?
你当然可以先判断文件存在,然后再include
但这样写不是很简洁吗?至少在编译器件要少分析一个语句吧?

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn