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

老师的代码中有个小疏忽,在所截的图片中只出现了3个字符,是因为在截取字符时$fontcontent = substr( $data, rand( 0, strlen($data)), 1 );所取的随机数是0到strlen($data),而当取strlen($data)时所对应的字符不存在,因此改为$fontcontent = substr( $data, rand( 0, strlen($data)-1), 1 );

正在回答

5 回答

聪明。。


0 回复 有任何疑惑可以回复我~

我也遇到了这个问题,多刷新几次竟然还有一个验证码只有两个字符。

0 回复 有任何疑惑可以回复我~

strlen 是取一个字符串长度,由于数组下标是从0开始的,-1之后表示最后一个字符的位置

0 回复 有任何疑惑可以回复我~

strlen($data)时所对应的字符不存在,为什么会不存在呢?还有这句时strlen($data)是什么意思呢?老师好像没说?

0 回复 有任何疑惑可以回复我~
#1

回眸淡然笑

因为角标从0开始的,strlen($data)为第n+1个,总共才n个
2014-09-17 回复 有任何疑惑可以回复我~

对的,呵呵,不好意思录制视频时候光顾讲了,没来得及操心代码~ 聪明的同学~

1 回复 有任何疑惑可以回复我~
#1

不等号

还是不明白为什么strlen($data)-1
2015-05-09 回复 有任何疑惑可以回复我~
#2

Peeta 回复 不等号

因为取不到 strlen($data) 这个值
2015-08-29 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
PHP实现验证码制作
  • 参与学习       37916    人
  • 解答问题       321    个

各种形态验证码核心原理与实现技巧,讲解实现过程中的技术难点

进入课程
意见反馈 帮助中心 APP下载
官方微信