Heim > Backend-Entwicklung > PHP-Tutorial > 关于ucenter通讯过程的代码的!CSDN大神多!慕名而来!请多指教

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

WBOY
Freigeben: 2016-06-13 11:58:30
Original
777 Leute haben es durchsucht

关于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 />
Nach dem Login kopieren


其中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 />
Nach dem Login kopieren


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

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

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage