• Thinkphp 验证码


    一.生成验证码

    $Verify = new ThinkVerify();
    $Verify->entry();

    生成的验证码信息会保存到session中,里面包含数据有:

    array('verify_code'=>'当前验证码的值','verify_time'=>'验证码生成的时间戳')

    如果需要在一个页面中生成多个验证码的话,entry方法中需要传入可标识的信息,例如

    // 验证码1
    $Verify = new ThinkVerify();
    $Verify->entry(1);
    // 验证码2
    $Verify = new ThinkVerify();
    $Verify->entry(2);

    验证码参数

    可以对生成的验证码设置相关的参数,

    //设置验证码参数
     $config = array( 'fontSize'=>30, //验证码字体大小 
    'length'=>3, //验证码位数
     'useNoise'=>false,//关闭验证码杂点 
    ); //实例化验证码类,并传入参数
    $verify = new Verify($config); //生成验证码 $verify->entry();

    上面,采用的配置变量方式来修改验证码参数,也可以使用动态设置方法:

    //实例化验证码类,并传入参数
     $verify = new Verify(); 
    
    //验证码字体大小 
    $verify->fontSize = 30;
    
     //验证码位数 $verify->length = 3; 
    
    //关闭验证码杂点
     $verify->useNoise = false; 
    
    //设置验证码字体 
     $verify->fontttf = '5.ttf';
    
    //设置背景图片功能,随机使用 
    $verify->useImgBg = true;
    
    //取消曲线混淆 
    $verify->useCurve = false;
    
    //设置验证码的高 
    $verify->imageH = 100; 
    
    //设置验证码的宽 
    $verify->imageW = 100;
    
    //设置验证码的长度 
    $verify->length = 3;
    
    //设置验证码加密密钥 
    $verify->seKey = 'YCKU.COM';
    
    //设置验证码背景颜色 
    $verify->bg = array(200,200,200);
    //生成验证码 
    $verify->entry();

    如果想让验证码显示中文字符,那么需要几个步骤:

    1.在 Think/zhttfs 文件夹下引入中文字体文件,比如加粗雅黑 msyhbd.ttf;

    2.设置字体文件;

    //设置验证码字体

    $verify->fontttf = 'msyhbd.ttf';

    3.设置中文验证码

    //设置中文验证码

    $verify->useZh = true;

    PS:由于中文字符较为庞大,你也可以限定指定的中文字符。

    //限定中文字符

    $verify->zhSet = 'xxx是个好人';

    //设置纯数字

    $verify->codeSet='0123456789';

    二、生成验证码例子:

    YzController.class.php

    <?php
    namespace YzController;
    use ThinkController;
    class YzController extends Controller
    {
        public function xianshi()
        {
            $yz = $_POST["uid"];
            if(empty($yz))//如果传过来的$_POST值为空,显示页面
            {
                $this->show();    
            }    
            else//如果不为空,显示验证码
            {
                $verify = new ThinkVerify(); 
                //如果验证成功,返回true,失败false   
                 if($verify->check($yz/*, $id*/))//$id为验证码的标识,在$Verify->entry();中没有定义标识,不写
                {
                    echo "注册成功!";    
                }    
            }            
        }
        public function yzm()//生成验证码方法
        {
            $Verify = new ThinkVerify(); 
            $Verify->fontSize = 30;//验证码字体大小
            $Verify->length   = 5;//验证码字体的长度
            $Verify->fontttf   = '5.ttf';//指定用那种字体
            $Verify->length   = 5;
            $Verify->entry();
        }
        public function _empty()//空方法,防止报错
        {
            $this->display('Empty/empty');    
        }    
    }
    View Code

    xianshi.html

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="__PUBLIC__/js/jquery-1.11.2.min.js"></script>
    <title>无标题文档</title>
    </head>
    
    <body>
    <form action="__ACTION__" method="post">
    <div><input type="text" id="yz" name="uid" />
    <img id="img" src="__CONTROLLER__/yzm" />
    </div>
    <div><input type="submit" value="验证" id="btn" /></div>
    </form>
    <script type="text/javascript">
    //点击图片,定义src,再走一遍方法,BUG是个别浏览器不兼容,可生成随机数,当参数传值
    $("#img").click(function(){
        var a = Math.ceil(Math.random()*100);//生成随机数,Math.random()是生成随机数,Math.ceil()是向上取整,Math.ceil(Math.random())都是取整到1,可以*100来生成1-100的随机整数
        alert(a);
        $("#img").attr("src","__CONTROLLER__/yzm/suijishu/"+a+"");//个别浏览器如果地址一样,不加载,可以后带参数(生成随机数)    
    })
    </script>
    </body>
    </html>
    View Code



  • 相关阅读:
    机器学习-第四讲(模型升级)
    AI人脸匹对
    AI换脸
    人脸识别分析小Demo
    动态规划-线性DP&区间DP
    动态规划-背包问题
    数学知识-博弈论
    数学知识-组合数
    数学知识-扩展欧几里得
    数学知识-欧拉函数&快速幂
  • 原文地址:https://www.cnblogs.com/zxl89/p/6229038.html
Copyright © 2020-2023  润新知