ThinkPHP项目验证码字体与颜色

wen PHP项目 4

本文目录导读:

ThinkPHP项目验证码字体与颜色

  1. 基本配置
  2. 自定义字体设置
  3. 在控制器中使用
  4. 字体文件说明
  5. 自定义颜色方案
  6. 前端调用示例
  7. 注意事项

在ThinkPHP项目中,验证码的字体和颜色通常通过配置参数来控制,以下是详细的设置方法:

基本配置

在ThinkPHP中,验证码的配置通常在config/captcha.php文件中:

return [
    // 验证码字符集合
    'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
    // 验证码字体大小(px)
    'fontSize' => 25,
    // 是否画混淆曲线
    'useCurve' => true,
    // 验证码图片高度
    'imageH' => 0,
    // 验证码图片宽度
    'imageW' => 0,
    // 验证码位数
    'length' => 4,
    // 验证码字体,不设置随机获取
    'fontttf' => '',
    // 背景颜色
    'bg' => [243, 251, 254],
    // 验证码颜色
    'color' => [0, 0, 0],
    // 验证码过期时间(s)
    'expire' => 1800,
    // 是否使用中文验证码
    'useZh' => false,
];

自定义字体设置

通过配置文件设置

// config/captcha.php
return [
    'fontttf' => './static/fonts/your-font.ttf', // 指定字体文件路径
    'fontSize' => 30,
    'color' => [33, 33, 33], // RGB颜色值
];

动态设置

use think\captcha\facade\Captcha;
// 动态设置验证码参数
$config = [
    'fontttf' => './static/fonts/arial.ttf',
    'fontSize' => 28,
    'color' => [255, 0, 0], // 红色
    'bg' => [255, 255, 255], // 白色背景
    'useCurve' => false,
];
// 生成验证码
return Captcha::create($config);

在控制器中使用

<?php
namespace app\controller;
use think\captcha\facade\Captcha;
class Verify
{
    // 生成验证码
    public function verify()
    {
        $config = [
            'fontttf' => './public/static/fonts/simhei.ttf',
            'fontSize' => 32,
            'length' => 4,
            'imageW' => 200,
            'imageH' => 60,
            'color' => [50, 20, 200], // 自定义颜色
            'bg' => [245, 245, 245],
            'useCurve' => true,
            'useNoise' => true,
        ];
        // 使用自定义配置生成验证码
        return Captcha::create($config);
    }
    // 验证验证码
    public function check()
    {
        $code = input('post.code');
        if (Captcha::check($code)) {
            return json(['code' => 1, 'msg' => '验证码正确']);
        } else {
            return json(['code' => 0, 'msg' => '验证码错误']);
        }
    }
}

字体文件说明

常用中文字体文件位置

public/static/fonts/
├── simhei.ttf       // 黑体
├── simsun.ttf       // 宋体
├── msyh.ttf         // 微软雅黑
├── arial.ttf        // Arial
└── custom-font.ttf  // 自定义字体

使用系统自带字体

'fontttf' => '5', // 数字1-5表示系统内置字体

自定义颜色方案

// 随机颜色生成
$randomColor = [
    rand(0, 255), 
    rand(0, 255), 
    rand(0, 255)
];
// 特定颜色方案
$config = [
    'color' => [66, 133, 244],     // Google蓝色
    'bg' => [255, 255, 255],       // 白色背景
    'fontttf' => './public/static/fonts/custom.ttf',
    'fontSize' => 28,
];

前端调用示例

<!-- HTML模板中 -->
<img src="{:captcha_src()}" alt="验证码" onclick="this.src=this.src+'?t='+Math.random()" />
<!-- 或者 -->
<img src="/verify/verify" alt="验证码" onclick="this.src='/verify/verify?t='+new Date().getTime()" />

注意事项

  1. 字体路径问题:确保字体文件路径正确,相对于项目根目录
  2. 字体兼容性:某些特殊字符可能需要特定的字体支持
  3. 性能考虑:使用系统字体比自定义字体加载更快
  4. 安全性:建议使用复杂一点的字体和颜色,增加验证码破解难度

如果需要修改默认配置,建议在config/captcha.php中进行统一的全局设置。

抱歉,评论功能暂时关闭!