返回介绍

21 UI 组件 自定义 Captcha 示例

发布于 2025-02-21 12:35:50 字数 1493 浏览 0 评论 0 收藏 0

Yii 内置的 Captcha 基本上可以满足大部分需求,如果你对验证码有特殊要求,你可以自定义 Captcha,这主要是通过扩展 CCaptchaAction 来实现的,本例自定义一个验证码功能,随机产生 10 以内的加减法,用户需要计算出正确的结果才能通过验证。

本例基于上例 UI 组件 Captcha 示例 ,做如下修改 首先在 protected/components 目录下创建一个 MathCaptchaAction,重载 generateVerifyCode, renderImage 等方法:

    class MathCaptchaAction extends CCaptchaAction
    {
 
        protected function generateVerifyCode()
        {
            return mt_rand((int)$this->minLength,
                (int)$this->maxLength);
        }
 
        public function renderImage($code)
        {
            parent::renderImage($this->getText($code));
        }
 
        protected function getText($code)
        {
            $code=(int)$code;
            $rand=mt_rand(1,$code-1);
            $op=mt_rand(0,1);
            if($op)
            {
 
                return $code-$rand. '+' . $rand;
 
            }else
            {
                return $code+$rand. '-' . $rand;
            }
        }
    }

然后修改 iteController 的 rules 使用新创建的 MathCaptchaAction

 
    public function actions()
    {
        return array(
            'captcha'=>array(
                    'class' => 'MathCaptchaAction',
                    'minLength' => 1,
                    'maxLength' => 10,
            ));
    }

picture21.1

图片 21.1 picture21.1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文