修改thinkphp验证码类,使之字符位置自适应。

16-12-02 19:22 字数 562 阅读 3090 已编辑

thinkphp是国内非常流行的php框架,因丰富的功能,完善的开发文档颇受phper喜爱。thinkphp中集成了很多非常好用的工具类。

其中验证码类就是日常使用频率很高的功能,但是在验证码图片宽度很大的时候,会出现字符非常紧凑的情况,很影响美观,如下图:

57d1b91a104165a9a6e6d271795b11ce.jpg

于是想着修改下代码,让字符能尽量分散居中,首先计算下X轴上字符的位置。

5e66487fecb8a1b146559b867e16b8b1.jpg

然后打开文件,简单修改下代码。

87c6f57ae6196d13f585874f5b69641b.jpg

for ($i = 0; $i<$this->length; $i++) {    
    $code[$i] = $this->codeSet[mt_rand(0, strlen($this->codeSet)-1)];    
    //$codeNX  += mt_rand($this->fontSize*1.2, $this->fontSize*1.6);修改前    
    // 优化字符x轴位置 by luz    
    $codeNX = (($this->imageW / $this->length) / 2 ) * ((2 * ($i + 1)) - 1);//修改后    
    imagettftext($this->_image, $this->fontSize, mt_rand(-40, 40),    $codeNX,$this->fontSize*1.6,$this->_color,$this->fontttf, $code[$i]);    
}    

然后看下效果:

6c6e48093bf47fd14eda3217aac12262.jpg

9e733dbcbb317c44d8976200fc6ac16c.jpg

这样修改只是为了好看,验证码位置应该是随机的。

1人点赞>
关注 收藏 改进 举报
3 条评论
排序方式 时间 投票
吴大侠

不赖

吴大侠

没毛病!

叶秋
@吴大侠 😆,多谢老铁支持。
请登录后发表评论