为了账号安全,请及时绑定邮箱和手机立即绑定

PHP生成一个随机数验证码,需要什么特殊计算方法吗?

PHP生成一个随机数验证码,需要什么特殊计算方法吗?

PHP
BIG阳 2019-03-17 01:25:25
纯讨论问题。比如生成一个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 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

复杂了完全没有意义,用户体验一点都不好,随机4为数字后台生成我觉得挺好。

查看完整回答
反对 回复 2019-03-18
?
莫回无

TA贡献1865条经验 获得超7个赞

验证码主要是识别难度,不能太难,也不能太容易被机器算出来,生成什么并不难,随机与否也不是问题。

查看完整回答
反对 回复 2019-03-18
?
手掌心

TA贡献1942条经验 获得超3个赞

验证码是和手机号,绑定去验证的。所以例子中说手机的验证码唯一,不具代表性。

查看完整回答
反对 回复 2019-03-18
?
烙印99

TA贡献1829条经验 获得超13个赞

其实就是随机算法问题,你当然可以使用rand或者mt_rand这些。你也可以使用更加复杂的rand算法来实现。

查看完整回答
反对 回复 2019-03-18
  • 6 回答
  • 0 关注
  • 828 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信