Ecshop 添加红包序列号:红包不存在,解决方法

呵呵……其实是个小问题,但是不能不说是Ecshop团队中的测试部门不够尽职。在红包使用过程中,如果数值较小例如红包序列号是:1000056556这样的,是没有问题的,如果超过一定数值(我遇到的是:2745225862之类)之后就会在添加红包的时候误报为:该红包不存在

问题在于,在user.php的添加红包流程中,Ecshop团队在post上来的bonus_sn上应用了intval函数,该段代码类似于下:

$bouns_sn = isset($_POST['bonus_sn']) ? intval($_POST['bonus_sn']) : ”;

而intval函数并非我们想象中的听话,在遇到一些超大的数据的时候例如:intval(2745225862)返回值并非我们期望的是:2745225862,而是-1549741434,这就会导致lib_transaction.php在执行add_bonus函数的时候,在数据库中无法查询到该红包————要是能查到才怪呢!故而报:该红包不存在,的提示。

把user.php的添加红包流程中的这句话:

$bouns_sn = isset($_POST['bonus_sn']) ? intval($_POST['bonus_sn']) : ”;

修改为:

$bouns_sn = isset($_POST['bonus_sn']) ? trim($_POST['bonus_sn']) : ”;

就可以了!

具体关于PHP 中intval为啥会这样返回,期待有钻研精神的兄弟们留言给个答案,以补充该文,谢谢。

补充:

PHP中 intval的取值范围:

与操作系统相关,

32位系统上为-2147483648到2147483647,

64位系统上为-9223372036854775808到9223372036854775807

有因有果,关于ecshop的红包添加报红包不存在的提示,至此圆满解决。

你可能感兴趣的:(ecshop)