Maison développement back-end tutoriel php ThinkPHP内置jsonRPC的缺陷分析_PHP

ThinkPHP内置jsonRPC的缺陷分析_PHP

Jun 01, 2016 am 11:06 AM
jsonrpc thinkphp 内置 indiquer défaut

本文较为详细的分析了ThinkPHP内置jsonRPC的缺陷。分享给大家供大家参考。具体分析如下:

最近在开发ios应用,要开发ios应用,当然要用到服务器,用服务器必然要选用远程调用协议,因为之前本人一直都是用php开发的,所以选用thinkphp当框架的apache服务器.

至于远程调用协议,经过思考,还是选用jsonRPC吧,比较简单方便,翻了一下thinkphp(是3.2版本)的手册,发现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'])

注意到这个函数没,call_user_func_array,array,点进去看参数说明,果然,$request['params']必须是数组类型,不是数组死活不认,更可恨的是,thinkphp没有对这个参数进行严格的校验,于是都不知道怎么错的.

知道了这个原因就好办了,前面加上校验.

代码如下:

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


这样就完美解决了问题.

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment exécuter le projet thinkphp Comment exécuter le projet thinkphp Apr 09, 2024 pm 05:33 PM

Comment exécuter le projet thinkphp

Il existe plusieurs versions de thinkphp Il existe plusieurs versions de thinkphp Apr 09, 2024 pm 06:09 PM

Il existe plusieurs versions de thinkphp

Comment exécuter thinkphp Comment exécuter thinkphp Apr 09, 2024 pm 05:39 PM

Comment exécuter thinkphp

Comment installer thinkphp Comment installer thinkphp Apr 09, 2024 pm 05:42 PM

Comment installer thinkphp

Lequel est le meilleur, Laravel ou thinkphp ? Lequel est le meilleur, Laravel ou thinkphp ? Apr 09, 2024 pm 03:18 PM

Lequel est le meilleur, Laravel ou thinkphp ?

Suggestions de développement : Comment utiliser le framework ThinkPHP pour implémenter des tâches asynchrones Suggestions de développement : Comment utiliser le framework ThinkPHP pour implémenter des tâches asynchrones Nov 22, 2023 pm 12:01 PM

Suggestions de développement : Comment utiliser le framework ThinkPHP pour implémenter des tâches asynchrones

Développement du système de gestion backend ThinkPHP6 : réalisation des fonctions backend Développement du système de gestion backend ThinkPHP6 : réalisation des fonctions backend Aug 27, 2023 am 11:55 AM

Développement du système de gestion backend ThinkPHP6 : réalisation des fonctions backend

Quelles sont les performances de thinkphp ? Quelles sont les performances de thinkphp ? Apr 09, 2024 pm 05:24 PM

Quelles sont les performances de thinkphp ?

See all articles