Discuz! X 3.5 source/class/class_seccode.php 第 221 行代码错误,导致验证码不能正常显示,并且报错 mt_rand(): Argument #2 ($max) must be greater than or equal to argument #1 ($min)
- mt_rand(): Argument #2 ($max) must be greater than or equal to argument #1 ($min)
- PHP:misc.php#require(%s):0096 -> source/module/misc/misc_seccode.php#seccode->seccode->display():0187 -> source/class/class_seccode.php#seccode->seccode->image():0042 -> source/class/class_seccode.php#seccode->seccode->ttffont():0064 -> source/class/class_seccode.php#mt_rand(%f, %d):0221 -> source/class/class_seccode.php#break():0221
- User: uid=1; IP=102.45.217.36; RIP:102.45.217.36 Request: /misc.php?mod=seccode&update=88541&idhash=cSzjo847
复制代码 出现这个错误,是因为 PHP mt_rand($min, $max) 函数参数取值错误,正常情况下,$min 和 $max 都必须是整数,而且 $min 不能比 $max 大,修改代码可解决这个问题。
用文本编辑软件打开 并搜索定位到以下代码- $x = mt_rand($font[0]['angle'] > 0 ? cos(deg2rad(90 - $font[0]['angle'])) * $font[0]['zheight'] : 1, $this->width - $widthtotal);
复制代码 将它修改为以下代码
- $qbbsXLimits = [$font[0]['angle'] > 0 ? cos(deg2rad(90 - $font[0]['angle'])) * $font[0]['zheight'] : 1, $this->width - $widthtotal];
- $x = $qbbsXLimits[0] < $qbbsXLimits[1] ? mt_rand(...$qbbsXLimits) : $qbbsXLimits[0];
复制代码 保存文件即可,代码可以有多种修改方式,以上示例只是其中一种。
更多信息可以参考 PHP 官方文档
https://www.php.net/manual/en/function.mt-rand.php
https://www.php.net/manual/en/functions.arguments.php |
|