有了之前的基础,这节教程来解决宠物拜师异常的问题,既然是拜师,就需要至少俩宠物吧,建立拎一个小号,搞个宠物。
1.通过宠物列表里,点击宠物名字,打开宠物的详细信息页面。发现- -额,页面错乱,看起来底部的信息到了上面。
2.通过链接xxx.com/plugin.php?id=wxpet:pet&index=viewpet&username=test,定位出现问题的模板文件是viewpet.htm,打开该文件。
排查了下,发现是上一节的批量替换,没有处理干净,在该文件的7-10行,宠物信息后面少了个div的结尾。开dreamweaver,把

宠物信息</div><div id="ct" class="wp cl w">

替换为

宠物信息</div></div><div id="ct" class="wp cl w">

,之所以这样替换是防止出错。自己体会下,为毛上面要多把下面一行的

<div id="ct" class="wp cl w">

放进去。

3.刷新,发现错位的问题已经解决,通过批量替换发现,受到影响的只有这一个文件,由此可见之前对这个版本源码发布的组织是多么的不专业……当然,这个问题后面还会有更多印证,我们只是从修复BUG中学习成长而已,其他细节就不用那么在意了。

4.阅读viewpet.htm源码的时候发现拜师的前提是

<!--{if $petjob>=26 && $mypetdata[mypetjob]<=8 && $mypetdata['mastername']==''}-->

对方的宠物转生数(后面就统一缩略为转数,转世的话就是转世数)大于26,且自己的宠物转数小于8且没有师傅。OK,修改test的宠物转世为27。再次刷新该页面。发现已经显示我要拜师的链接了。点击一下看看。

5.跳出了404页面,观察地址,xxx.com/pet.php?index=viewpet&action=bs&petid=2
对比一下之前的宠物地址 xxx.com/plugin.php?id=wxpet:pet&index=viewpet&username=test
发现问题所在了么?插件的跳转链接根本就不对啊,这种pet.php的方式是很久以前7.2的Discuz!插件的跳转方式啊,知道了问题所在,来批量替换下。
需要注意的是,这次批量替换,要通过dreamweaver的站点-管理站点,把上次的站点的路径改一下,改成:

F:\APMServ5.2.6\www\wxpet\source\plugin\wxpet

就是向上了一个层级,因为没准儿core下的php也有这个跳转的问题。

6.修改好后,把“pet.php?index=”替换为“plugin.php?id=wxpet:pet&index=”

替换结束,发现之替换了三个文件,还好还好~再次刷新查看宠物的页面,点击我要拜师,链接已经正常了,但是跳出了无效操作的提示。模板文件OK了,检查core下的viewpet.php文件,阅读源码发现无效操作是因为没有提取出宠物信息,然后宠物信息是根据宠物ID提取的,再上推,到15行获取宠物ID。
为了调试获取的宠物ID是否正常,在第17行加入一句话

showmsg("$petid");

显示宠物ID

7.再次拜师,发现提示是0,看来问题就出在这里了。参考上面的代码,获取action是通过$_G[‘gp_action’];所以我们把$_G[‘petid’];改为$_G[‘gp_petid’];
保存文件后,重新提交拜师申请。

问题得以修复。本节教程结束。

Related Posts: 无心宠物-BUG修复系列-2-宠物拜师异常的修复 :