Maison >cadre php >PensezPHP >Comment utiliser ThinkPHP6 pour implémenter la fonction de code de vérification

Comment utiliser ThinkPHP6 pour implémenter la fonction de code de vérification

WBOY
WBOYoriginal
2023-06-21 17:48:353325parcourir

Dans les systèmes d'authentification de connexion tels que la connexion à un site Web ou à une application, l'enregistrement et la récupération de mot de passe, la fonction de code de vérification est devenue une méthode courante de vérification des utilisateurs. La fonction de code de vérification peut prévenir efficacement les attaques malveillantes et les attaques de robots, et protéger les données des utilisateurs et la sécurité du système. Cet article expliquera comment utiliser le framework ThinkPHP6 pour implémenter la fonction de code de vérification.

1. Introduction à la fonction de code de vérification ThinkPHP6

La fonction de code de vérification dans le framework ThinkPHP6 peut être implémentée en utilisant la classe thinkcaptchaCaptcha. Cette classe offre de nombreuses options pour définir la longueur, la police, la taille de la police, le type de ligne d'interférence, le type de point d'interférence, etc. du code de vérification. Ces options nous permettent de personnaliser nos propres codes de vérification pour répondre aux besoins de scénarios commerciaux spécifiques.

2. Étapes de mise en œuvre

  1. Installer le framework ThinkPHP6

Après avoir configuré l'environnement PHP dans l'environnement local, vous pouvez utiliser composer pour installer le framework ThinkPHP6. Entrez la commande suivante sur la ligne de commande :

composer create-project topthink/think myproject

Cela créera un répertoire de projet appelé monprojet et installera et initialisera automatiquement toutes les dépendances requises pour le projet.

  1. Créer une méthode de code de vérification

Dans le framework ThinkPHP6, nous pouvons définir la méthode du code de vérification dans le contrôleur. Par exemple, nous pouvons créer une méthode de vérification dans le contrôleur Index. Cette méthode peut accepter un paramètre pour spécifier la longueur du code de vérification. Le code est le suivant :

namespace appindexcontroller;

use thinkcaptchaCaptcha;

class Index
{
    public function verify($length = 4)
    {
        $captcha = new Captcha([
            'length'    =>  $length,
            'useNoise'  =>  true,
            'fontSize'  =>  30,
            'useCurve'  =>  false,
        ]);
        return $captcha->entry();
    }
}

Dans le code ci-dessus, nous utilisons la classe Captcha pour générer le code de vérification. Nous transmettons certains paramètres pour spécifier la longueur du code de vérification, s'il faut utiliser des lignes d'interférence ou des points d'interférence, etc.

  1. Afficher le code de vérification

Dans le code du contrôleur ci-dessus, nous utilisons la méthode $captcha->entry() pour afficher le code de vérification. Cette méthode générera une image et affichera l’image directement sur le navigateur. $captcha->entry()方法来显示验证码。这个方法将会生成一张图片,并在浏览器上直接输出图片。

我们可以在模板或视图文件中创建一个img元素,将它的src属性设置为我们在步骤2中创建的验证码方法的URL,即可在前端页面上显示验证码了。代码如下:

<img src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" />

在上面的代码中,我们使用url函数生成验证码图片的URL,并将长度设定为4,在点击图片时重新加载验证码图片,以更新验证码。

  1. 校验验证码

我们可以在提交表单数据时,使用PHP的session机制来获取用户输入的验证码,然后与生成的验证码进行比较来校验验证码是否正确。代码如下:

namespace appindexcontroller;

use thinkcaptchaCaptcha;

class Index
{
    public function verify($length = 4)
    {
        $captcha = new Captcha([
            'length'    =>  $length,
            'useNoise'  =>  true,
            'fontSize'  =>  30,
            'useCurve'  =>  false,
        ]);
        return $captcha->entry();
    }
    
    public function check()
    {
        $code = input('post.captcha');
        if(captcha_check($code)){
            // 验证码正确
        }else{
            // 验证码错误
        }
    }
}

在上面的代码中,我们定义了一个check方法,用于校验用户输入的验证码。我们使用captcha_check()

Nous pouvons créer un élément img dans le modèle ou le fichier de visualisation, définir son attribut src sur l'URL de la méthode de code de vérification que nous avons créée à l'étape 2, et le code de vérification peut être affiché sur la page frontale. Le code est le suivant :
    <img id="captcha" src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" />
    <button onclick="document.getElementById('captcha').src='{:url('index/verify', ['length'=>4])}?' + Math.random(); return false;">刷新验证码</button>
  1. Dans le code ci-dessus, nous utilisons la fonction url pour générer l'URL de l'image du code de vérification et définissons la longueur sur 4. Lorsque l'on clique sur l'image, l'image du code de vérification est rechargée pour être mise à jour. le code de vérification.
    1. Vérifier le code de vérification

      Nous pouvons utiliser le mécanisme de session de PHP pour obtenir le code de vérification saisi par l'utilisateur lors de la soumission des données du formulaire, puis le comparer avec le code de vérification généré pour vérifier que la vérification est le code est correct ? Le code est le suivant :

      namespace appindexcontroller;
      
      use thinkcaptchaCaptcha;
      
      class Index
      {
          // 验证码函数
          public function verify($length = 4)
          {
              $captcha = new Captcha([
                  'length'    =>  $length,
                  'useNoise'  =>  true,
                  'fontSize'  =>  30,
                  'useCurve'  =>  false,
              ]);
              return $captcha->entry();
          }
          
          // 验证码校验函数
          public function check()
          {
              $code = input('post.captcha');
              if(captcha_check($code)){
                  // 验证码正确
              }else{
                  // 验证码错误
              }
          }
      }

      Dans le code ci-dessus, nous définissons une méthode de vérification pour vérifier le code de vérification saisi par l'utilisateur. Nous utilisons la fonction captcha_check() pour comparer si le code de vérification saisi par l'utilisateur et le code de vérification généré sont égaux.

      1. Fonction d'actualisation du code de vérification

      Parfois, nous devons fournir la fonction d'actualisation du code de vérification lorsque l'utilisateur saisit le code de vérification de manière incorrecte, afin que l'utilisateur puisse réussir la vérification plus rapidement. Nous pouvons réaliser cette fonction en actualisant simplement la page, ou en modifiant l'URL de l'image du code de vérification.

      Sur la page frontale, ajoutez un bouton d'actualisation à l'élément de l'image du code de vérification. Cliquez sur ce bouton pour recharger l'image du code de vérification afin de mettre à jour le code de vérification. Le code est le suivant :

      <!-- 登录表单页面 -->
      <form method="post" action="{:url('index/check')}">
          <div>
              <label>用户名</label>
              <input type="text" name="username" />
          </div>
          <div>
              <label>密码</label>
              <input type="password" name="password" />
          </div>
          <div>
              <label>验证码</label>
              <img id="captcha" src="{:url('index/verify', ['length'=>4])}" onclick="this.src=this.src+'?rand='+Math.random()" /><br/>
              <input type="text" name="captcha" />
              <a href="#" onclick="document.getElementById('captcha').src='{:url('index/verify', ['length'=>4])}?' + Math.random(); return false;">刷新验证码</a>
          </div>
          <button type="submit">登录</button>
      </form>
      🎜Dans le code ci-dessus, nous utilisons du code JavaScript pour modifier l'attribut src de l'image du code de vérification et passons la fonction Math.random() en tant que paramètre à la fonction url. De cette façon, chaque actualisation générera une nouvelle URL pour recharger le code de vérification. 🎜🎜🎜Exemple de code complet🎜🎜🎜L'extrait de code ci-dessus n'est peut-être pas suffisamment complet. Ce qui suit est le code complet utilisant ThinkPHP6 pour implémenter la fonction de code de vérification. 🎜rrreeerrreee🎜Ce qui précède est l'ensemble du processus d'utilisation de ThinkPHP6 pour implémenter la fonction de code de vérification. Si vous développez une application Web ou un site Web, l'utilisation de la fonction de code de vérification peut améliorer la sécurité du système et protéger les données des utilisateurs contre les attaques malveillantes. 🎜

    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:
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn