Maison > Article > développement back-end > Comment implémenter le code de vérification en PHP
Avec le développement continu d'Internet, de plus en plus de sites Web doivent utiliser des codes de vérification pour assurer la sécurité. Le code de vérification est une technologie d'authentification qui repose sur les capacités humaines et ne peut pas être déchiffrée par les ordinateurs. Il est largement utilisé pour l'enregistrement de sites Web, la connexion, la récupération de mots de passe et d'autres fonctions. Ce qui suit explique comment utiliser PHP pour implémenter la fonction de code de vérification.
1. Générer une image de code de vérification
La génération d'une image de code de vérification est au cœur de la fonction de code de vérification. Elle doit générer un caractère aléatoire et le restituer sous forme d'image à afficher à l'utilisateur. En PHP, vous pouvez utiliser la bibliothèque GD pour générer des images.
La bibliothèque GD est une extension PHP permettant de créer dynamiquement des images. Elle fournit une variété de fonctions pour créer des images, modifier des images, enregistrer des images, etc. Les images de codes de vérification peuvent être facilement créées via la bibliothèque GD.
Les étapes pour générer un code de vérification sont les suivantes :
Les éléments suivants sont une implémentation spécifique du code :
<?php //设置图片大小,这里是120x40 $image_width = 120; $image_height = 40; //创建画布 $image = imagecreatetruecolor($image_width, $image_height); //设置背景色为白色 $bg_color = imagecolorallocate($image, 255, 255, 255); imagefill($image, 0, 0, $bg_color); //生成随机字符串 $code = ""; $charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $charset_length = strlen($charset); for ($i = 0; $i < 4; $i++) { $rand_index = rand(0, $charset_length - 1); $rand_char = substr($charset, $rand_index, 1); $code .= $rand_char; } //将字符串渲染到图像中 $font_size = 20; $font_color = imagecolorallocate($image, 0, 0, 0); $x = 10; $y = ($image_height - $font_size) / 2; for ($i = 0; $i < 4; $i++) { $char = substr($code, $i, 1); imagettftext($image, $font_size, rand(-10, 10), $x, $y, $font_color, "arial.ttf", $char); $x += $font_size + rand(-5, 5); } //添加干扰线、干扰点等 for ($i = 0; $i < 6; $i++) { $line_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255)); imageline($image, rand(0, $image_width), rand(0, $image_height), rand(0, $image_width), rand(0, $image_height), $line_color); } for ($i = 0; $i < 50; $i++) { $point_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255)); imagesetpixel($image, rand(0, $image_width), rand(0, $image_height), $point_color); } //输出图像 header("Content-type:image/png"); imagepng($image); //销毁图像 imagedestroy($image); ?>
Le code ci-dessus générera une image de code de vérification aléatoire et l'affichera dans le navigateur. Parmi eux, la police Arial, le texte noir, le fond blanc, 6 lignes d'interférence et 50 points d'interférence sont utilisés. Peut être personnalisé selon les besoins.
2. Vérifiez le code de vérification
Après avoir généré l'image du code de vérification, vous devez comparer le code de vérification saisi par l'utilisateur avec le code de vérification généré pour confirmer si l'utilisateur a saisi le bon code de vérification. En PHP, la chaîne de code de vérification générée peut être stockée dans la session pour une vérification ultérieure.
Les étapes spécifiques sont les suivantes :
Voici l'implémentation du code :
<?php //生成验证码 session_start(); $code = ""; $charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $charset_length = strlen($charset); for ($i = 0; $i < 4; $i++) { $rand_index = rand(0, $charset_length - 1); $rand_char = substr($charset, $rand_index, 1); $code .= $rand_char; } $_SESSION["captcha"] = $code; //展示验证码图片 $image_width = 120; $image_height = 40; $image = imagecreatetruecolor($image_width, $image_height); $bg_color = imagecolorallocate($image, 255, 255, 255); imagefill($image, 0, 0, $bg_color); $font_size = 20; $font_color = imagecolorallocate($image, 0, 0, 0); $x = 10; $y = ($image_height - $font_size) / 2; for ($i = 0; $i < 4; $i++) { $char = substr($code, $i, 1); imagettftext($image, $font_size, rand(-10, 10), $x, $y, $font_color, "arial.ttf", $char); $x += $font_size + rand(-5, 5); } header("Content-type:image/png"); imagepng($image); imagedestroy($image); //校验验证码 session_start(); if (isset($_POST["captcha"])) { $user_input = $_POST["captcha"]; if (strcasecmp($user_input, $_SESSION["captcha"]) != 0) { echo "验证码错误"; } else { echo "验证码正确"; } } ?>
Dans le code ci-dessus, la session est utilisée pour stocker la chaîne de code de vérification générée, et le code de vérification saisi est comparé au code de vérification stocké dans la session. Parmi elles, la fonction strcasecmp est une fonction qui compare deux chaînes quelle que soit la casse si elles sont identiques, elle renvoie 0, et si elles sont différentes, elle renvoie une valeur non nulle.
Résumé
La mise en œuvre de la fonction de code de vérification via PHP peut garantir efficacement la sécurité du site Web. Lors de la génération d'images de code de vérification, vous pouvez facilement créer des images de code de vérification dans différentes couleurs et polices à l'aide de la bibliothèque GD, et ajouter des lignes d'interférence, des points d'interférence, etc. pour augmenter la sécurité. Lors de la vérification du code de vérification, la chaîne de code de vérification générée doit être stockée dans la session pour une comparaison ultérieure.
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!