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

请注意:本页内容发布于 4216 天前,内容可能已经过时,请注意甄别。

单位要求一周内写出一个略有规模的网站来,从头写又要防范太多问题是要死人的,于是用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)即可。目前时间紧,没有时间研究真正应该使用的条件,先这样。

Comments

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

 剩余字数 ( Characters available )

Your comment will be available after auditing.
您的评论将在通过审核后显示。

Please DO NOT add any links in your comment, otherwise it would be identified as SPAM automatically and never be audited.
请不要在评论中插入任何链接,否则将被自动归类为垃圾评论,且永远不会被提交给博主进行复审。

*