Maison > cadre php > PensezPHP > le corps du texte

Que dois-je faire si le code de vérification de thinkphp3.2.3 ne s'affiche pas ?

PHPz
Libérer: 2023-04-21 11:29:34
original
853 Les gens l'ont consulté

En tant que développeur PHP, nous utilisons souvent le framework ThinkPHP, et le code de vérification est un niveau important pour la protection de la sécurité du site Web. Cependant, parfois lors de l'utilisation du framework ThinkPHP3.2.3, nous rencontrons le problème que le code de vérification ne s'affiche pas, ce qui rend le code de vérification inutile. Nous sommes très confus. Alors, comment le résoudre ?

Tout d'abord, comprenons le processus de génération du code de vérification. Dans ThinkPHP, le code de vérification est implémenté en créant une image et ThinkPHP utilise la bibliothèque GD pour générer des images par défaut. Pour faire simple, le code de vérification est généré en générant une image avec des lignes d'interférence, des points d'interférence et des caractères aléatoires. Ensuite, si le code de vérification ne s’affiche pas, c’est souvent parce que la génération de l’image a échoué.

Pour résoudre ce problème, nous pouvons essayer les étapes suivantes pour résoudre le problème du code de vérification qui ne s'affiche pas.

Étape 1 : Vérifiez si la session est ouverte

Tout d'abord, nous devons vérifier si la session a été ouverte. Étant donné que la génération du code de vérification nécessite l'utilisation d'une session pour enregistrer la valeur du code de vérification, si la session n'est pas activée, le code de vérification ne peut pas être généré normalement.

Pour vérifier l'état d'ouverture de la session, vous pouvez le visualiser dans config.php. Ouvrez le fichier config.php et ajoutez le code suivant dans le tableau de retour :

'session_auto_start' => true,
Copier après la connexion

Ce code permet au programme d'ouvrir automatiquement la session lorsque. il démarre. S'il est déjà ouvert, cela n'affectera pas l'utilisation normale.

Étape 2 : Vérifiez si la bibliothèque GD est disponible

Deuxièmement, nous devons vérifier si la bibliothèque GD a été installée, car ThinkPHP utilise la bibliothèque GD par défaut pour générer des codes de vérification. Si la bibliothèque GD n'est pas installée ou ne peut pas être utilisée, le code de vérification ne peut pas être généré normalement.

Pour vérifier si la bibliothèque GD est installée, vous pouvez vérifier si le module gd2 a été décompressé dans le fichier php.ini et si les trois modules extension=php_gd2.dll extension=php_mbstring.dll extension=php_exif.dll sont tous présents. sans commentaire.

Retrouvez les deux lignes de configuration suivantes dans le fichier php.ini :

extension=php_gd2.dll;
Copier après la connexion
extension=php_mbstring.dll;
Copier après la connexion

S'il n'y a pas de point-virgule devant, cela signifie que la bibliothèque GD a été correctement installée.

Étape 3 : Vérifiez si le répertoire de génération du code de vérification est accessible en écriture

Lorsque le code de vérification est généré, l'image générée doit être enregistrée sur le serveur, nous devons donc également vérifier si le répertoire de génération du code de vérification est accessible en écriture. Si le répertoire de génération ne dispose pas d'autorisations ou n'existe pas, le code de vérification ne sera pas généré normalement.

Nous pouvons ajouter le code suivant au fichier config.php pour configurer le répertoire de génération du code de vérification :

'captcha'  =>array(
        'fontSize' => 30,         //验证码字体大小
        'length'   => 4,          //验证码位数
        'useCurve' => false,      //是否画混淆曲线
        'useNoise' => false,      //是否添加杂点
        'fontttf'  => '5.ttf',    //验证码字体,不设置随机获取
        'bg'       => array(243, 251, 254), //背景颜色
        'reset'    => true        //验证成功后是否重置
    ),
Copier après la connexion

Dans ce tableau, nous pouvons personnaliser la longueur du code de vérification, s'il faut tracer une courbe de confusion, s'il faut ajouter du bruit points, et le chemin du fichier de police, etc. Cela nous permet également de personnaliser un nom pour le répertoire de génération du code de vérification, et ce répertoire doit être accessible en écriture.

Par exemple, si le répertoire de génération du code de vérification est défini sur le répertoire Application/Runtime/Cache/, nous devons alors nous assurer que le répertoire est accessible en écriture, sinon le code de vérification ne sera pas affiché.

Étape 4 : Essayez de changer le code de vérification en mode URL

Si aucun problème n'est détecté dans les étapes ci-dessus, nous pouvons essayer d'utiliser le mode Url fourni par ThinkPHP pour générer le code de vérification. Ce mode utilise la balise HTML5 canvas, qui peut générer des codes de vérification dynamiques et mieux prévenir les attaques de robots et le craquage par force brute.

Nous pouvons ajouter le code suivant au fichier config.php pour définir le modèle d'URL pour générer les codes de vérification :

'captcha'    => true,
Copier après la connexion

Cela générera une adresse URL par défaut, comme indiqué ci-dessous :

<img src="__APP__/Public/verify/" onclick="this.src=&#39;__APP__/Public/verify/&#39;+Math.random()">
Copier après la connexion
Copier après la connexion

Le __APP__ ici est fourni par le système La variable représente le répertoire racine de l'application actuelle et verify est le nom de la méthode du contrôleur où nous générons le code de vérification.

Cette méthode peut rencontrer des problèmes de cache du navigateur et rendre la page gonflée. Par conséquent, nous pouvons également utiliser du code JavaScript de niche pour vider le cache du navigateur tout en générant le code de vérification pour résoudre ce problème.

Dans la page HTML, nous pouvons écrire comme ceci :

<img src="__APP__/Public/verify/" onclick="this.src=&#39;__APP__/Public/verify/&#39;+Math.random()">
Copier après la connexion
Copier après la connexion

En JavaScript, nous pouvons écrire comme ceci :

$(function(){
    $('#verify_img').click(function(){
        var timenow = new Date().getTime();
        $(this).attr('src','/Home/Public/verify/' + timenow);
    });
});
Copier après la connexion

Ce code JavaScript générera dynamiquement un horodatage à chaque fois que l'on clique sur l'image du code de vérification, ce qui en fait une partie du L'URL garantit que chaque fois que vous accédez au code de vérification, il s'agit d'une nouvelle adresse URL, évitant ainsi efficacement les problèmes de mise en cache du navigateur.

Résumé

Grâce à ces solutions courantes, nous pouvons résoudre efficacement le problème du code de vérification ThinkPHP3.2.3 qui ne s'affiche pas. Dans les projets de développement réels, nous devons également suivre ces spécifications pour garantir le fonctionnement normal du programme et mieux protéger la confidentialité des utilisateurs et la sécurité des données. Dans le même temps, nous devons toujours prêter attention aux problèmes de sécurité, continuer à apprendre et à explorer de nouvelles technologies pour prévenir les attaques sur les sites Web et protéger la sécurité des sites Web.

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!

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