纯讨论问题。比如生成一个4位数字或者六位数字的短信验证码,可以直接mt_rand(1000,9999)来生成吗?或者如字母+数字的图像验证码。我看了一些开源框架的随机生成方法,都有比较复杂的方法。网上搜索的方法,大部分都是超简单的方式。
网上的简单方法和开源框架的复杂方法,都有什么利弊呢?
if ($this->minLength > $this->maxLength) {
$this->maxLength = $this->minLength;
}
if ($this->minLength < 3) {
$this->minLength = 3;
}
if ($this->maxLength > 20) {
$this->maxLength = 20;
}
$length = mt_rand($this->minLength, $this->maxLength);
$letters = 'bcdfghjklmnpqrstvwxyz';
$vowels = 'aeiou';
$code = '';
for ($i = 0; $i < $length; ++$i) {
if ($i % 2 && mt_rand(0, 10) > 2 || !($i % 2) && mt_rand(0, 10) > 9) {
$code .= $vowels[mt_rand(0, 4)];
} else {
$code .= $letters[mt_rand(0, 20)];
}
}
return $code;
上面是摘抄的yii2的生成方法,for循环里面的这个if$i % 2 && mt_rand(0, 10) > 2 || !($i % 2) && mt_rand(0, 10) > 9是什么意思?为什么是对2取余,>2,>9什么的?
- 6 回答
- 0 关注
- 828 浏览
添加回答
举报
0/150
提交
取消