ホームページ  >  記事  >  バックエンド開発  >  ThinkPHP の組み込み jsonRPC の欠陥分析、thinkPHP の組み込み jsonrpc_PHP チュートリアル

ThinkPHP の組み込み jsonRPC の欠陥分析、thinkPHP の組み込み jsonrpc_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 10:11:22920ブラウズ

ThinkPHPの組み込みjsonRPC、thinkPHPの組み込みjsonrpcの欠陥分析

この記事では、ThinkPHP の組み込み jsonRPC の欠陥を詳しく分析します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:

私は最近iOSアプリケーションを開発しています。iOSアプリケーションを開発するには、当然サーバーを使用する必要があります。サーバーを使用する場合は、常にPHPを使用して開発してきたため、thinkphpを選択しました。フレームワークの Apache サーバー

リモート呼び出しプロトコルについては、考えた結果、比較的簡単で便利な jsonRPC を使用することにしました。thinkphp がまだ jsonRPC をサポートしていることがわかりました。自分で書く必要はありません (もちろん、書くのも面倒ではありません)。

thinkphp をクライアントとして使用するだけで、thinkphp サーバー側インターフェイスを呼び出すことができます。使い方は簡単です。

次のステップは Android 側です。オンラインでパッケージ (android-json-rpc.jar) を見つけ、インターフェースを呼び出しました。使い方も簡単でとてもスムーズに進みます

その後、ios に切り替えました。github で objc-JSONRpc プロジェクトを見つけて、それを使用してインターフェイスを呼び出しました。これは正常ですが、探していたプロジェクトに何か問題があったのかもしれません。 Demiurgic-JSON に変更しました。 -RPC はまだ使いにくいです。Web 側でも Android 側でも問題なく呼び出すことができたので、iOS プログラムに注目しました。半日かかりましたが、問題は見つかりませんでした。iOS 側からも、他の人が提供した JSP クライアント インターフェイスを呼び出しました。問題はありませんでした。

その後、thinkphp の組み込み jsonRPC モジュールを調べ始めました (さまざまなデバッグ、コードの削除、Dbug) 後、次のコード行を見つけました。

コードをコピーします

コードは次のとおりです:$result = @call_user_func_array(array($object,$request['method']),$request['params'])
この関数が_user_func_array, array を呼び出していないことに気付きました。それをクリックすると、パラメータの説明が表示されます。$request['params'] は配列型である必要があります。配列が有効か無効であるかが認識されないわけではありません。さらにひどいのは、thinkphp がこのパラメーターを厳密に制御していないため、何が問題なのかわかりません。
理由が分かると対処しやすいです

コードをコピーします


コードは次のとおりです:

if (is_array($request['params'])) { $request['params'] = array_values($request['params']); } その他 { $request['params'] = array($request['params']);
}

これで問題は完全に解決されました。

この記事が皆さんの ThinkPHP フレームワークに基づく PHP プログラムの設計に役立つことを願っています。

http://www.bkjia.com/PHPjc/929676.html

www.bkjia.com

tru​​ehttp://www.bkjia.com/PHPjc/929676.html技術記事 ThinkPHP の組み込み jsonRPC、thinkphp の組み込み jsonrpc の欠陥分析 この記事では、ThinkPHP の組み込み jsonRPC の欠陥をより詳しく分析します。参考のためにみんなで共有してください。具体的な分析は次のとおりです: 最も...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。