您现在的位置是:首页 > cms教程 > ecshop商城教程ecshop商城教程

ecshop添加红包序列号提示红包不存在的解决方法

马仁2025-02-06 17:45:39ecshop商城教程已有6人查阅

导读呵呵……其实是个小问题,但是不能不说是Ecshop团队中的测试部门不够尽职。在红包使用过程中,如果数值较小例如红包序列号是:1000056556这样的,是没有问题的,如果超过一定数值(我遇

呵呵……其实是个小问题,但是不能不说是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

本文标签:

很赞哦! (1)

暂无内容
暂无内容
暂无内容
暂无内容
留言与评论 (共有 0 条评论)
昵称:
匿名发表 登录账号
         
验证码: