迪巴拉 发表于 2022-5-27 10:04:15

function dintval函数存在BUG:

function dintval函数存在BUG:
就是这个使用量非常大的函数: https://zhidao.baidu.com/question/554863766.html

后面那里0xffffffff里面判断0到9个数是否一致就返回原始参数, 如果传入的参数是前面带0的:

比如: dintval('04500000000')
返回的也会是字符串'04500000000', 在自身的mysql里面查询是没有问题的, 但是如果是要传输给别人ajax或者输出给html时,
然后后续又有判断 '4500000000' == '04500000000', 就会判断成不相等, 实际是相等的

拾光 发表于 2022-5-27 10:04:52

我知道后面为啥要用strspn去判断数字, 是因为非64位系统或PHP小于7.1时, php只能处理小于42亿的数字,
因为如果系统整体不支持64位的话, 只修复intval这一个函数也是没有意义的, time()等一大堆基础函数里面的数字如果大于21亿的话执行后同样也会乱码不正确的

TyCoding 发表于 2022-5-27 10:05:40

网上教程说要支持大于21亿的int数字只要64位系统和安装64位的PHP说法也是错的,
就算系统和PHP都是64的, PHP版本如果小于7的话也是不行的, 只有php大于7以上才是完美支持了大于21亿的int,
所以在本身就不支持大于21亿的前提下只去修复dintval这一个也是没有意义的, 反而还容易导致出现1楼的BUG
页: [1]
查看完整版本: function dintval函数存在BUG:

创宇盾启航版免费网站防御网站加速服务