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

WBOY
リリース: 2016-06-23 13:56:13
オリジナル
1059 人が閲覧しました

ucenter をデバッグしているときに、/control/admin/app.php でこのコードに遭遇しました
if($app['extra']['apppath'] && @include $app['extra']['apppath'] .'./api/'.$app['apifilename'])
{
//code
}
この後に含まれるファイルは、実行結果なのかファイル自体なのか、それとも単に true または false を返すのか?
include は .php ファイルに含まれています。
分割線----------------------------------------------- -------------------------------------------------- -- ---------------
以下のファイルの onping 関数を実行します

<?php	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']) {			echo 'in if='.$app['extra']['apppath'].'./api/'.$app['apifilename'];			$uc_note = new uc_note();			$status = $uc_note->test($note['getdata'], $note['postdata']);		} else {			echo 'in 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();';		}	}?>
ログイン後にコピー


include $app['extra']['apppath'].'./api/'ファイル $app['apifilename'] は、他のディレクトリにある uc.php ファイルです。フロントのコードは次のとおりです。このファイルは HDwiki5.1 の utf8 バージョンに付属しています。

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


では、なぜ「無効なリクエスト」が出力されるのでしょうか?この出力は正しいですか?


ディスカッションへの返信 (解決策)

@include $app['extra']['apppath'].'./api/'.$app['apifilename'] の場合
ファイル $app[ ' extra']['apppath'].'./api/'.$app['apifilename'] 存在しない場合はfalseの反対
存在する場合は1を返す
これで問題ない書き方!

プログラムに問題がある場合は、他の場所で原因を探してください

@include $app['extra']['apppath'].'./api/'.$app['apifilename'] の場合
ファイル $app['extra']['apppath'].'./api/'.$app['apifilename'] が存在しない場合は false を返します
存在する場合は 1 を返します
ありますこの書き方で問題ありません!

プログラムに問題がある場合は、他の場所に原因を探してください



この使用法と file_exists の機能の違いは何ですか?含まれるコンテンツはローカル番組に影響を与えますか?それとも単にファイルが存在するかどうかを確認するだけですか?

include コンテンツが含まれているはずです。投稿したスニペットから多くの定義を確認できませんか?
もちろん、最初にファイルが存在することを確認してからそれをインクルードすることもできます
しかし、このように書くのは非常に簡潔ではないでしょうか?コンパイルされたデバイスで解析する必要があるステートメントが少なくとも 1 つ少なくなりますよね?

問題が見つかりました
301 ジャンプの問題です
ホスト空間を変更すると、元の独立 IP が消えてしまいました!
301 リダイレクトに問題がある可能性があります。
本当にありがとう!

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート