Maison > cadre php > PensezPHP > le corps du texte

Génération et vérification du code de vérification ThinkPHP6 : protection de la sécurité des applications

PHPz
Libérer: 2023-08-13 10:13:45
original
1922 Les gens l'ont consulté

Génération et vérification du code de vérification ThinkPHP6 : protection de la sécurité des applications

Génération et vérification du code de vérification ThinkPHP6 : protégez la sécurité des applications

Avec le développement d'Internet, divers types d'attaques malveillantes apparaissent sans cesse. Afin de protéger la sécurité des applications, les codes de vérification sont devenus une mesure de sécurité courante. Cet article présentera comment générer et vérifier des codes de vérification dans le framework ThinkPHP6, et l'expliquera à travers des exemples de code.

1. Générer un code de vérification

Dans ThinkPHP6, la génération d'un code de vérification peut être réalisée en utilisant le package d'extension topthink/think-captcha. Tout d'abord, nous devons ajouter des dépendances dans le fichier composer.json dans le répertoire du projet : topthink/think-captcha 来实现。首先,我们需要在项目目录中的 composer.json 文件中添加依赖关系:

"require": {
    "topthink/think-captcha": "^1.0"
}
Copier après la connexion

然后,执行 composer update 命令来安装依赖包。安装完成后,我们可以在控制器或服务层中使用验证码对象来生成验证码。

假设我们在登录页面中需要生成验证码,可以在控制器中进行如下操作:

use thinkcaptchaacadeCaptcha;

class LoginController extends Controller
{
    public function index()
    {
        // 生成验证码
        $captcha = Captcha::create();
        
        // 把验证码保存到session中
        session('captcha', $captcha->getCode());
        
        // 渲染登录页面,将生成的验证码图片和表单一起展示
        return view('login', [
            'captcha_img' => $captcha->getImage(),
        ]);
    }
}
Copier après la connexion

在上述代码中,我们首先使用 Captcha 类的 create 方法生成了一个验证码对象,并将验证码保存到了 session 中。然后,将生成的验证码图片和登录表单一起传递给登录页面进行展示。

二、验证验证码

在用户提交登录表单后,我们需要验证用户输入的验证码是否正确。ThinkPHP6框架提供了方便的方法来进行验证码验证。

在登录页面表单提交后,我们可以在控制器中进行如下操作来验证验证码:

use thinkcaptchaacadeCaptcha;

class LoginController extends Controller
{
    public function login()
    {
        // 获取用户输入的验证码
        $inputCode = input('captcha');
        
        // 获取session中保存的验证码
        $sessionCode = session('captcha');
        
        // 进行验证码验证
        if (!captcha_check($inputCode, $sessionCode)) {
            // 验证码错误,返回错误信息
            return '验证码错误!';
        }
        
        // 验证码验证通过,执行登录逻辑
        // ...
    }
}
Copier après la connexion

在上述代码中,我们首先通过 input 函数获取用户输入的验证码,然后通过 session 函数获取之前生成的验证码。最后,使用 captcha_check 函数来验证验证码是否正确。如果验证码验证通过,则执行登录逻辑;否则,返回错误信息。

三、在视图中展示验证码

为了在登录页面中展示验证码,我们需要在对应的视图文件中进行相应的操作。假设我们的登录视图文件是 login.html,可以在该文件中添加如下代码:

<form action="/login" method="post">
    <div>
        <label for="captcha">验证码:</label>
        <input type="text" id="captcha" name="captcha" required>
    </div>
    <div>
        <img src="{{ captcha_img }}" alt="验证码">
    </div>
    <div>
        <button type="submit">登录</button>
    </div>
</form>
Copier après la connexion

在上述代码中,我们首先添加了一个输入框来接收用户输入的验证码。然后,通过 img 标签来展示验证码图片,其中 {{ captcha_img }}rrreee

Ensuite, exécutez la commande composer update pour installer le package de dépendances. Une fois l'installation terminée, nous pouvons utiliser l'objet code de vérification dans la couche contrôleur ou service pour générer le code de vérification.

Supposons que nous devions générer un code de vérification dans la page de connexion, nous pouvons faire ce qui suit dans le contrôleur : 🎜rrreee🎜Dans le code ci-dessus, nous utilisons d'abord le create du Captcha Classe > La méthode génère un objet code de vérification et enregistre le code de vérification dans session. Ensuite, transmettez l'image du code de vérification généré et le formulaire de connexion à la page de connexion pour affichage. 🎜🎜2. Vérifiez le code de vérification🎜🎜Une fois que l'utilisateur a soumis le formulaire de connexion, nous devons vérifier si le code de vérification saisi par l'utilisateur est correct. Le framework ThinkPHP6 fournit une méthode pratique pour la vérification du code de vérification. 🎜🎜Une fois le formulaire de la page de connexion soumis, nous pouvons effectuer les opérations suivantes dans le contrôleur pour vérifier le code de vérification : 🎜rrreee🎜Dans le code ci-dessus, nous obtenons d'abord le code de vérification saisi par l'utilisateur via le input, puis obtenez le code de vérification généré précédemment via la fonction <code>session. Enfin, utilisez la fonction captcha_check pour vérifier que le code captcha est correct. Si le code de vérification est transmis, la logique de connexion est exécutée, sinon un message d'erreur est renvoyé. 🎜🎜3. Afficher le code de vérification dans la vue 🎜🎜Afin d'afficher le code de vérification sur la page de connexion, nous devons effectuer les opérations correspondantes dans le fichier de vue correspondant. En supposant que notre fichier de vue de connexion soit login.html, vous pouvez ajouter le code suivant au fichier : 🎜rrreee🎜Dans le code ci-dessus, nous avons d'abord ajouté une zone de saisie pour recevoir le code de vérification saisi par le utilisateur. Ensuite, affichez l'image du code de vérification via la balise img, où {{ captcha_img }> utilise la syntaxe du moteur de modèle pour la sortie. 🎜🎜Grâce aux étapes ci-dessus, nous avons implémenté avec succès les opérations de génération de code de vérification et de vérification dans le framework ThinkPHP6. En tant que mesure de sécurité courante, les codes de vérification peuvent très bien prévenir les attaques malveillantes. J'espère que cet article pourra vous aider à comprendre et à utiliser la fonction de code de vérification de ThinkPHP6. 🎜

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal