b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

当Ucenter与应用程序通信失败时

电脑杂谈  发布时间:2020-06-21 20:26:55  来源:网络整理

常见故障.

对于那些刚接触Ucenter的人来说,添加应用程序时最大的麻烦就是发现通信故障.

如果要解决此问题,必须首先了解Ucenter如何与应用程序通信.

只有知道如何在Ucenter和应用程序之间进行通信,我们才能找到通信失败的原因.

所以让我们从源头上找到它吧!

使用Firefox协助查找通信失败的原因会更容易[我不是在宣传Firefox!真的很容易使用].

首先让我们看看谁输出了通信失败的四个词:

右键单击Firefox->此框架->查看框架源代码[请注意,它必须在“通讯失败”附近]. 如图所示:

通过火狐查看帧代码图示

然后在源代码中找到应用程序访问地址. 查找通信失败的位置.

请注意,通信失败的四个字符是由js生成的. 无法直接发现通信故障.

经过仔细研究,我们发现通讯失败是由类似于以下代码的代码产生的:

<div id="status_3"></div><script id="link_3" testlink="admin.php?m=app&a=ping&inajax=1&url=http://www.seinc.com/slight&ip=&appid=3&random=30773"></script><script>apps[2] = '3';</script>

似乎可以通过admin.php访问应用程序地址,并根据访问结果判断通信结果.

从字面上看,应该是应用程序中的ping操作. 似乎仍然无法访问.

现在,我们已经找到了通信失败的原因,让我们转到admin.php应用程序以查找在ping过程中访问了什么,并根据什么样的结果确定通信的成功或失败.

查看Ucenter目录. 显然,操作程序代码在控制目录中. 进入控制目录,哇!果然有一个app.php.

别担心!您没有看到一个管理目录. 由于该应用只是通过admin.php调用的,因此该操作当然是写在admin目录中的.

实际上,控制目录中的app.php是常规操作应用程序. 如果打开代码以找到ping方法,则找不到.

好的,我们转到admin目录,打开app.php,然后查找ping. 好!找到了!如下图所示:

app.php里的onping方法图示

此方法称为onping. 我们分析并发现密钥就在这里:

if($status == '1') { echo 'document.getElementByIdx_x(\'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.getElementByIdx_x(\'status_'.$appid.'\').innerHTML = "<img src=\'images/error.gif\' border=\'0\' class=\'statimg\' \/><span class=\'red\'>'.$this->lang['app_connent_false'].'</span>";testlink();'; }

如果status的值为1,则表示可以,否则为false. 让我们简要看一下上面的代码. 我们注意到,通过onping方法访问的地址实际上是应用程序地址+ / api / + $ app ['apifilename'].

然后您可以用脚趾来理解它ucenter通信失败,实际上,实际地址是应用程序目录的api目录中的uc.php.

如果您不确定,我们将看一下$ url的输出. 对代码进行以下更改:

if($status == '1') { echo 'document.getElementByIdx_x(\'status_'.$appid.'\').innerHTML = "<img src=\'images/correct.gif\' border=\'0\' class=\'statimg\' \/><span class=\'green\'>'.$url.'</span>";testlink();'; } else { echo 'document.getElementByIdx_x(\'status_'.$appid.'\').innerHTML = "<img src=\'images/error.gif\' border=\'0\' class=\'statimg\' \/><span class=\'red\'>'.$url.'</span>";testlink();'; }

请注意ucenter通信失败,我们将输出ok或false替换为上述网址. 在管理后台中检查应用程序列表:

哦,地址不见了!我们将失败的地址和成功的地址复制到地址栏中以供访问.

如果白页上只有1,则表示成功. 如果还有其他事情,那就意味着失败!

现在我们知道了访问的真实地址,让我们看看该地址如何告诉Ucenter通信成功或失败.

在应用程序目录api中打开uc.php之后,我们注意到它首先从get中解码代码,并在获得action命令后做出响应:

$code = $_GET['code']; parse_str(authcode($code, 'DECODE', UC_KEY), $get);//先做解密,就是url?code后边那一长串。 if(MAGIC_QUOTES_GPC) { $get = dstripslashes($get); } //print_r($get); //exit; if(time() - $get['time'] > 3600) { exit('Authracation has expiried'); } if(empty($get)) { exit('Invalid Request'); } $action = $get['action'];//解码后得到action 就是Ucenter传过来的指令。Ucenter到底默认会传递什么指令过来?回到Ucenter的app.php里认真研究了onping我们发现默认传递的是test指令。

然后我们在uc.php中寻找测试. 最终发现默认连接速度快时执行的代码.

根据个人情况,此处的代码可能对每个人都不同. 仔细研究会发现问题所在.

如果您懒惰而又听不懂,请直接删除...然后回显1;欺骗Ucenter. 看到成功沟通的小勾号,我感到更加自在.

文章只是告诉您失败的原因. 如何获得成功一词. 通信成功与失败的影响不在本文讨论范围之内.

最后,让我们清理Ucenter与应用程序之间的交互:

无论您添加哪种类型的应用程序,都可以在“ Communication Success”(通信成功)中打上一个小勾号. 那篇文章不是徒劳的.

请关注有关Ucenter的其他文章.

谢谢!


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-253709-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      • 李亚静
        李亚静

        我都是喝可乐的

      • 冯莹莹
        冯莹莹

        太完美了

      • 王褒
        王褒

        我们可不可以把质监局这种做错事不道歉

      热点图片
      拼命载入中...