ホームページ >バックエンド開発 >PHPチュートリアル >ucenter通信処理のコードについて! CSDNマスターはたくさんいます!名声を得るためにここに来てください!もっとアドバイスをください

ucenter通信処理のコードについて! CSDNマスターはたくさんいます!名声を得るためにここに来てください!もっとアドバイスをください

WBOY
WBOYオリジナル
2016-06-13 11:58:30779ブラウズ

ucenterの通信処理のコードを教えてください。 CSDNマスターはたくさんいます!名声を得るためにここに来てください!もっとアドバイスをください!
ucenter をデバッグしているときに、/control/admin/app.php で次のコードを見つけました。
if($app['extra']['apppath'] && @include $app['extra'][ 'apppath'].'./api/'.$app['apifilename'])
{
//code
}
実行結果の場合、この後にファイルが含まれますか?ファイル自体を返すのか、それとも true または 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\' \/><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\' \/><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 ファイルです。フロントのコードは次のとおりです。このファイルは HDwiki5.1 の utf8 バージョンに付属しています。

<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 />


では、なぜ「無効なリクエスト」が出力されるのでしょうか?この出力は正しいですか?
------解決策---------
@include $app['extra'] の場合 [ 'apppath'].'./api/'.$app['apifilename']
ファイル $app['extra']['apppath'].'./api/'.$app['apifilename '] 存在しない場合は false
存在する場合は 1
を返す この書き方で全く問題ありません!

プログラムに問題がある場合は、別の場所で原因を探してください
-----解決策------ - ----
include には必須のコンテンツが必要です。投稿したスニペットから多くの定義を確認できませんか?
もちろん、最初にファイルが存在することを確認してから、
をインクルードすることもできます。しかし、このように書くのは非常に簡潔ではないでしょうか?コンパイルされたデバイスで解析する必要があるステートメントが少なくとも 1 つ少なくなりますよね?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。