Maison  >  Article  >  cadre php  >  Explication détaillée du code de vérification du framework ThinkPHP

Explication détaillée du code de vérification du framework ThinkPHP

藏色散人
藏色散人avant
2020-10-28 15:35:364102parcourir

Ce qui suit est une introduction au code de vérification du framework ThinkPHP de la colonne du didacticiel ThinkPHP. J'espère que cela sera utile aux amis dans le besoin !

La classe ThinkVerify peut prendre en charge les fonctions de génération et de vérification des codes de vérification.

Ce qui suit est le moyen le plus simple de générer un code de vérification :

$Verify = new \Think\Verify();$Verify->entry();

Le code ci-dessus générera une image de code de vérification par défaut et l'affichera, comme indiqué ci-dessous :

Les informations du code de vérification générées seront enregistrées dans la session, et les données incluses sont :

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

Si vous devez générer plusieurs codes de vérification sur une seule page, l'entrée La méthode doit transmettre les informations identifiées.

Paramètres du code de vérification

Vous pouvez définir les paramètres pertinents pour le code de vérification généré afin d'obtenir différents effets d'affichage. Ces paramètres incluent :

参数 描述
expire 验证码的有效期(秒)
useImgBg 是否使用背景图片 默认为false
fontSize 验证码字体大小(像素) 默认为25
useCurve 是否使用混淆曲线 默认为true
useNoise 是否添加杂点 默认为true
imageW 验证码宽度 设置为0为自动计算
imageH 验证码高度 设置为0为自动计算
length 验证码位数
fontttf 指定验证码字体 默认为随机获取
useZh 是否使用中文验证码
bg 验证码背景颜色 rgb数组设置,例如 array(243, 251, 254)
seKey 验证码的加密密钥
codeSet 验证码字符集合 3.2.1 新增
zhSet 验证码字符集合(中文) 3.2.1 新增

Configuration des paramètres par défaut :

Les réglages des paramètres utilisent deux méthodes.

Instanciez les paramètres entrants :

ou utilisez des paramètres dynamiques, tels que :

Vérification code font

Par défaut, la police du code de vérification est utilisée de manière aléatoire dans le fichier de police sous le répertoire ThinkPHP/Library/Think/Verify/ttfs/ Nous pouvons spécifier la police du code de vérification, par exemple :

$Verify = new \Think\Verify();// 验证码字体使用 ThinkPHP/Library/Think/Verify/ttfs/5.ttf$Verify->fontttf = '5.ttf';$Verify->entry();
Image d'arrière-plan

Prend en charge la fonction d'image d'arrière-plan du code de vérification, qui peut être définie comme suit :

$Verify = new \Think\Verify();// 开启验证码背景图片功能 随机使用 ThinkPHP/Library/Think/Verify/bgs 目录下面的图片$Verify->useImgBg = true;$Verify->entry();
Code de vérification chinois

Si vous souhaitez utiliser le code de vérification chinois, vous pouvez set :

$Verify = new \Think\Verify();// 验证码字体使用 ThinkPHP/Library/Think/Verify/zhttfs/simhei.ttf$Verify->useZh = true;$Verify->entry();
display L'effet est le suivant :

S'il ne peut pas être affiché normalement, veuillez confirmer qu'il existe des fichiers de polices chinoises sous votre ThinkPHP /Bibliothèque/Think/Verify/zhttfs/.

S'il n'y a pas de fichier de police chinoise dans ThinkPHP/Library/Think/Verify/zhttfs/, vous pouvez télécharger ou copier le fichier de police chinoise depuis C:WindowsFonts. Notez que l'extension du fichier de police est .ttf.

Détection du code de vérification

Vous pouvez utiliser la méthode

de la classe ThinkVerify pour vérifier si la saisie du code de vérification est correcte. Par exemple, ce qui suit est une détection de code de vérification encapsulé. fonction : check

// 检测输入的验证码是否正确,$code为用户输入的验证码字符串function check_verify($code, $id = ''){$verify = new \Think\Verify();return $verify->check($code, $id);
}
Exercice : Prendre la connexion comme exemple :

Méthode du contrôleur :

<?php
namespace Home\Controller;use Think\Controller;class LoginController extends Controller
{    function Login()
    {        if(empty($_POST))
        {            $this->display();    
        }    
        else
        {            $code = $_POST["yzm"];             $verify = new \Think\Verify();           if($verify->check($code,2)) //code是用户输入的值 ,2是验证码检测标示,必须与生成的验证码标示相同才能验证            {                if($_POST["uid"]!="" && $_POST["pwd"]!="")
                {                    $model = D("Users");                    $uid = $_POST["uid"];    
                    $pwd = $_POST["pwd"];                    $attr = $model->field("Pwd")->find($uid);                    //var_dump($attr);
                    if($pwd==$attr["pwd"])
                    {
                        session("uid",$uid);   // 跳转页面之前将$uid存入session                    $this->success("登录成功!","Main");                                            }                    else
                    {                        $this->error("登录失败!");    
                    }
                }                else
                    {                        $this->error("用户名或者密码不能为空!");    
                    }
            }            else
            {                $this->error("验证码不正确!");    
            }
        }        
    }//生成验证码的操作方法
    function yzm()
    {        $config =    array(    
            'fontSize'    =>    30,    // 验证码字体大小    
            'length'      =>    4,     // 验证码位数  
            'useCurve'    =>    true,  // 是否画混淆曲线  
            'useNoise'    =>    true,  // 关闭验证码杂点
            'expire'      =>    60,    // 验证码有效期(秒)
            'useImgBg'    =>    false,  // 使用背景图片
            'useZh'       =>    true,  // 使用中文验证码
            'imageW'      =>    240,   // 验证码宽度
            'imageH'      =>    60,    // 验证码高度
            'fontttf'     =>    'simhei.ttf', // 验证码字体        );        $Verify = new \Think\Verify($config);        $Verify->entry(2);//参数是生成验证码的标示,适用于同一个页面有多个验证码的时候,生成验证码的标示必须与检测验证码的标示相同,否则验证码不正确    }?>
Demande de méthode de connexion :

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer