Server : nginx/1.20.1
System : Linux iZ2ze9ojcl78uluczwag69Z 4.18.0-240.22.1.el8_3.x86_64 #1 SMP Thu Apr 8 19:01:30 UTC 2021 x86_64
User : www ( 1000)
PHP Version : 7.3.28
Disable Function : passthru,exec,system,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /www/wwwroot/0531yanglao.com/app/admin/validate/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /www/wwwroot/0531yanglao.com/app/admin/validate/VerifyValidate.php
<?php
/*
 * @Description  : 验证码验证器
 * @Author       : https://github.com/skyselang
 * @Date         : 2021-03-09
 * @LastEditTime : 2021-03-09
 */

namespace app\admin\validate;

use think\Validate;
use app\admin\service\VerifyService;

class VerifyValidate extends Validate
{
    // 验证规则
    protected $rule = [
        'switch'      => ['require', 'boolean'],
        'curve'       => ['require', 'boolean'],
        'noise'       => ['require', 'boolean'],
        'bgimg'       => ['require', 'boolean'],
        'type'        => ['require', 'between:1,5'],
        'length'      => ['require', 'between:3,6'],
        'expire'      => ['require', 'between:10,3600'],
        'verify_id'   => ['require'],
        'verify_code' => ['require', 'checkVerify'],
    ];

    // 错误信息
    protected $message = [
        'switch.require'      => '验证码开关状态错误',
        'switch.boolean'      => '验证码开关值错误',
        'curve.require'       => '验证码曲线状态错误',
        'curve.boolean'       => '验证码曲线值错误',
        'noise.require'       => '验证码杂点状态错误',
        'noise.boolean'       => '验证码杂点值错误',
        'bgimg.require'       => '验证码背景图状态错误',
        'bgimg.boolean'       => '验证码背景图值错误',
        'type.require'        => '请选择验证码类型',
        'type.between'        => '验证码类型错误',
        'length.require'      => '请选择验证码位数',
        'length.between'      => '验证码位数错误',
        'expire.require'      => '请输入验证码有效时间',
        'expire.between'      => '验证码有效时间范围:10-3600 秒',
        'verify_id.require'   => '缺少参数:verify_id',
        'verify_code.require' => '请输入验证码',
    ];

    // 验证场景
    protected $scene = [
        'edit'  => ['switch', 'curve', 'noise', 'type', 'bgimg', 'length', 'expire'],
        'check' => ['verify_id', 'verify_code'],
    ];

    // 自定义验证规则:验证码验证
    protected function checkVerify($value, $rule, $data = [])
    {
        $verify_id   = $data['verify_id'];
        $verify_code = $data['verify_code'];

        $VerifyService = new VerifyService();
        $check_verify  = $VerifyService->check($verify_id, $verify_code);
        if (empty($check_verify)) {
            return '验证码错误';
        }

        return true;
    }
}