验证码插件改进建议

浏览:557 发布日期:2018/02/27 分类:ThinkPHP5专区
我根据tp5.1手册通过 composer 安装了验证码插件。使用过程中发现当修改验证码图片的高度后,文字有时会出现显示不全的问题。通过跟踪代码,发现该操作在将文字(英文)写入图片时,y 值用的是 字体大小 * 1.6。由于字体相当于固定值,那么当修改图片高度时,如果图片高图偏小,文字就会显示在图片外面。
所以我修改了 y 值计算方法,感觉显示效果比原来要好:} else {
            $codeY = ($this->imageH - $this->fontSize)/2 + $this->fontSize; // 这是修改后的代码,默认要求图片高度大于字体的高度。
            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);
                imagettftext($this->im, $this->fontSize, mt_rand(-10, 10), $codeNX, $codeY, $this->color, $this->fontttf, $code[$i]);
            }
        }
修改的文件:think-captcha/src/Captcha.php
修改前的效果:
修改后的效果:
配置参数:<?php 
return [
    // 图片高度
    'imageH'    => 30,
    'imageW'    => 100,
    // 字体大小
    'fontSize' => 20,
    // 验证码长度(位数)
    'length'   => 2,
    // 是否画混淆曲线
    'useCurve'  => false,
    // 是否添加杂点
    'useNoise'  => false,
];
最佳答案
评论( 相关
后面还有条评论,点击查看>>