Day 2682 PHPCMS v9 会员注册总提示【请输入正确的手机号码】

单位要求一周内写出一个略有规模的网站来,从头写又要防范太多问题是要死人的,于是用PHPCMS v9垫底。

在重写会员注册模板时出现一个问题:手机号(字段名mobile)原则上是可选项,但无论是否POST上去mobile值,都提示【请输入正确的手机号码】。百度没有任何结果(请别吐槽,Google搜索大陆only的东西真的不大行)只好自己想办法,最后在modules\member\index.php的第115行发现问题:

if(isset($model_field_cache['mobile']) && $model_field_cache['mobile']['disabled']==0)

这一行的上方写的是【查看当前模型是否开启了短信验证功能】,一开始被这行字误导,根本没有向下看,后来逐行脑内运行的时候才发觉这里有问题,如果当前模型有mobile字段且没有禁用,那么前台没有提交info[mobile]时,下面的代码就会出问题:

$mobile = $_POST['info']['mobile'];
if(!preg_match('/^1([0-9]{10})/',$mobile)) showmessage(L('input_right_mobile'));

前台就算提交了input name为info[mobile]的值也没有用,不知道是不是我的理解有误([‘info’][‘mobile’]看起来应该不是info[mobile]),不过PC官方论坛上有人用原始版本关闭短信验证也会出现这个问题,所以更像是原版程序的纰漏。

不知道PC v9当时设计时为什么把短信验证是否开启用这两个条件(模型mobile字段是否存在并且没有禁用)作为判断条件?不应该是调取后台【会员模块配置】的【手机强制验证方式】的值嘛?

修改方法:对于不需要短信验证的站点,将判断条件随便改一下(比如…[‘disabled’]改成 != 0)即可。目前时间紧,没有时间研究真正应该使用的条件,先这样。

Day 2619 洛奇割羊毛新方法:用砸的

mabinogi_wool_collecting_by_hunting4月4日更新后,新开了收集彩蛋的活动,持有篮子追击兔子即可获取彩蛋。

该篮子归属剑类别,所以在剑精通未满的人物上会显示剑精通获得经验,但YY上有人发现了新用途:剪羊毛!

而且剪羊毛的动作和打铁一样!SE也是打铁的声音!可怜的羊……

于是去查了一下彩蛋篮和铁匠榔头的属性:

铁匠榔头:

/equip/righthand/tool/blacksmith/blunt/steel/hammer/02/weapon/Blacksmith_Hammer/smith_repairable/not_ego/

彩蛋篮子:

/equip/righthand/weapon/edged/steel/blade/no_scale/not_dropable/destroyable/not_dyeable/not_enchantable/expiring/not_holyfire/onlybaseattack/misc_repairable/

二者重合的属性有equip(装备)、righthand(装备到右手)、steel(铁的),并无其它交集,猜测彩蛋篮子可以采集是出于weapon(武器)属性,而敲打声来自steel(铁的),至于挥舞的动作,如果打铁属于采集大类下的动作,那么也可以用steel解释得通。

Day 2615 洛奇skillinfo、skillleveldescription XML浅析

给自己写的东西留个纪念

前阵子一时兴起,折腾了一个本地化的技能小册子,因为网上基本查不到公开的内容,所以数据靠自己解析,幸好是XML,相对不难。

不过后来写着写着被洛奇数据的诡异弄烦了,决定放弃,顺便把过往经验留一下,做个参考。
老实说我也不知道整理这个有什么用,就当消磨时间吧。 继续阅读 “Day 2615 洛奇skillinfo、skillleveldescription XML浅析”