验证码

验证码功能由 ginkgo\Captcha 完成。


生成验证码

在控制器中使用下面的代码进行验证码生成:

  1. namespace app\index\ctrl;
  2. use ginkgo\Captcha;
  3. class Index {
  4. public function verify() {
  5. $captcha = Captcha::instance();
  6. $captcha->set();
  7. return $captcha->create();
  8. }
  9. }

访问下如下地址就可以显示验证码

http://server/index.php/index/index/verify

在模板中可以使用如下代码显示验证码

  1. <div><img src="http://server/index.php/index/index/verify" alt="captcha"></div>

如果要在一个页面中生成多个验证码,create 方法可以传入标识信息(数字或字符串),例如:

  1. namespace app\index\ctrl;
  2. use ginkgo\Captcha;
  3. class Index {
  4. public function verify() {
  5. $captcha = Captcha::instance();
  6. $captcha->set();
  7. return $captcha->create(1);
  8. }
  9. }

可以用 Captcha 类的 check 方法检测验证码是否正确

  1. if (!$captcha->check($value)) {
  2. // 验证失败
  3. }

如果页面上同时生成了多个验证码,则可以使用

  1. $value 为用户输入的验证码,$id 为验证码标识
  2. if (!$captcha->check($value, $id)) {
  3. // 验证失败
  4. }

验证码的配置参数

Captcha 类带有默认的配置参数,支持自定义配置。这些参数包括:

参数 描述 默认
length 长度 4
expire 过期时间 1800
font_file 字体路径 空 随机从字体文件夹读取
font_size 字号 20
width 图片宽度 0 为自动计算
height 图片高度 0 为自动计算
reset 验证成功后是否重置 true
noise 是否加入干扰 true
  • 实例化传入参数:

    1. $config = array(
    2. 'font_size' => 30, // 验证码字体大小
    3. 'length' => 3, // 验证码位数
    4. 'noise' => false, // 关闭验证码杂点
    5. );
    6. $captcha = Captcha::instance($config);
  • 验证码字体

    默认情况下,验证码的字体是随机使用 ginkgo/captcha/font 目录下面的字体文件,我们可以指定验证码的字体,例如:

    1. $config = array(
    2. 'font_file' => GK_PATH_CORE . 'captcha/font/5.ttf', // 验证码字体路径
    3. );
    4. $captcha = Captcha::instance($config);