当前位置: 首页 > news >正文

yii2.0 验证码

首先我们在控制器里创建一个actions方法,用于使用yii\captcha\CaptchaAction

<?php
 
namespace app\controllers;
 
use YII;
use yii\web\Controller;
 
class IndexController extends Controller
{
    public function actionIndex()
    {
        if (YII::$app->request->isPost) {
            //获取post过来的验证码
            $verify = YII::$app->request->post('verify');
 
            //我们手动进行验证,第二个参数表示是否区分大小写
            if ($this->createAction('captcha')->validate($verify, false)) {
                echo '成功';
            } else {
                echo '失败';
            }
 
        } else {
            return $this->renderPartial('index');
        }
    }
 
    //actions的作用主要是共用功能相同的方法
    //当用户访问index/captcha时,actions就会调用yii\captcha\CaptchaAction方法
    public function actions()
    {
        return [
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => null,
                //背景颜色
                'backColor' => 0x000000,
                //最大显示个数
                'maxLength' => 4,
                //最少显示个数
                'minLength' => 4,
                //间距
                'padding' => 2,
                //高度
                'height' => 30,
                //宽度
                'width' => 85,
                //字体颜色
                'foreColor' => 0xffffff,
                //设置字符偏移量
                'offset' => 4,
            ],
        ];
    }
}

显示页面代码如下:

<?php
use yii\helpers\Url;
use yii\helpers\Html;
?>
<!doctype html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>分页显示</title>
</head>
<body>
    <form action="<?php echo Url::toRoute('index/index'); ?>" method="post">
        验证码:<input type="text" name="verify"><br>
        <img id="verifyImg" src="<?php echo Url::toRoute('index/captcha'); ?>"><br>
        <input type="submit" value="提交">
        <input name="_csrf" type="hidden" value="<?php echo \Yii::$app->request->csrfToken; ?>">
    </form>
 
    <?php echo Html::jsFile('@web/js/jquery-3.3.1.min.js'); ?>
    <script type="text/javascript">
        $(function () {
            //处理点击刷新验证码
            $("#verifyImg").on("click", function () {
                $.get("<?php echo Url::toRoute('index/captcha') ?>?refresh", function (data) {
                    $("#verifyImg").attr("src", data["url"]);
                }, "json");
            });
        });
    </script>
</body>
</html>

 

转载于:https://www.cnblogs.com/5aiQ/p/9437613.html

相关文章:

  • Weakpass
  • MySQL基础知识之DDL操作
  • ubuntu LNMP nginx 隐藏index.php 配置文件
  • saltstack离线安装内部yum源搭建
  • mysql初次安装,设置密码
  • 将回调地狱按在地上摩擦的Promise
  • 如何恢复回收站删除的文件
  • 这是我的第一篇博客
  • 直播这么火,你知道怎么测试直播软件吗?
  • httpd
  • 游北国风光,忆南国之乡
  • IDEA 2018创建ssm工程 运行时出现500错误
  • 微软把UWP定位成业务线应用程序开发平台
  • CentOS 7使用dnf安装Memcached以及启动、停止、开机启动等设置
  • EventListener原理
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • 5、React组件事件详解
  • Git初体验
  • GraphQL学习过程应该是这样的
  • mysql innodb 索引使用指南
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • sublime配置文件
  • Zepto.js源码学习之二
  • 从0实现一个tiny react(三)生命周期
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 聊聊directory traversal attack
  • 如何编写一个可升级的智能合约
  • 使用common-codec进行md5加密
  • 详解移动APP与web APP的区别
  • 用Python写一份独特的元宵节祝福
  • 字符串匹配基础上
  • Python 之网络式编程
  • ​Linux·i2c驱动架构​
  • ​secrets --- 生成管理密码的安全随机数​
  • #Z0458. 树的中心2
  • $.ajax()参数及用法
  • (C#)一个最简单的链表类
  • (poj1.2.1)1970(筛选法模拟)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (二)换源+apt-get基础配置+搜狗拼音
  • (未解决)macOS matplotlib 中文是方框
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转载)微软数据挖掘算法:Microsoft 时序算法(5)
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .bat批处理(四):路径相关%cd%和%~dp0的区别
  • .MSSQLSERVER 导入导出 命令集--堪称经典,值得借鉴!
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • /proc/vmstat 详解
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • ??javascript里的变量问题
  • [ C++ ] STL---string类的模拟实现