Maison >développement back-end >tutoriel php >Comment générer une image de code de vérification en utilisant PHP

Comment générer une image de code de vérification en utilisant PHP

WBOY
WBOYoriginal
2023-08-19 14:12:341989parcourir

Comment générer une image de code de vérification en utilisant PHP

Comment générer une image de code de vérification à l'aide de PHP

Le code de vérification Captcha (CAPTCHA) est une technologie courante utilisée pour authentifier un utilisateur ou restreindre l'accès à des programmes automatisés. En générant des images aléatoires et en obligeant les utilisateurs à identifier les caractères ou images corrects, les CAPTCHA peuvent empêcher efficacement les attaques de robots et les enregistrements de spam. Dans cet article, nous présenterons comment utiliser PHP pour générer une image de code de vérification et l'afficher sur la page.

  1. Tout d'abord, nous devons créer un fichier PHP pour générer l'image du code de vérification. Vous pouvez le nommer captcha.php et vous assurer que l’extension du fichier est .php.
  2. Dans le fichier captcha.php, nous devons définir certaines variables pour définir la largeur, la hauteur et le nombre de caractères de l'image du code de vérification. Nous pouvons également définir un tableau pour stocker tous les caractères possibles. L'exemple de code est le suivant :
<?php
$width = 120; // 验证码图片的宽度
$height = 40; // 验证码图片的高度
$characters = 4; // 验证码字符个数

$possibleChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
  1. Ensuite, nous devons créer une image vierge et définir certaines propriétés de base de l'image, telles que la couleur et la police. L'exemple de code est le suivant :
$image = imagecreatetruecolor($width, $height);

$backgroundColor = imagecolorallocate($image, 255, 255, 255); // 背景颜色为白色
$textColor = imagecolorallocate($image, 0, 0, 0); // 文字颜色为黑色

imagefill($image, 0, 0, $backgroundColor);

$font = 'path/to/your/font.ttf'; // 字体文件路径,可以根据自己的需求修改
  1. Maintenant, nous devons générer aléatoirement des personnages et les dessiner sur l'image. Nous pouvons utiliser la fonction aléatoire de PHP pour sélectionner des caractères dans le tableau de caractères et utiliser la fonction imagettftext pour écrire les caractères dans l'image. L'exemple de code est le suivant :
$captcha = '';

for ($i = 0; $i < $characters; $i++) {
    $randomChar = $possibleChars[rand(0, strlen($possibleChars) - 1)];
    $captcha .= $randomChar;

    $x = ($width / $characters) * $i + 10; // 10为字体边距
    $y = $height / 2 + 15; // 15为字体居中偏移量

    imagettftext($image, 20, 0, $x, $y, $textColor, $font, $randomChar);
}
  1. Enfin, nous devons stocker le code de vérification généré dans la session pour une vérification ultérieure. L'exemple de code est le suivant :
session_start();
$_SESSION['captcha'] = $captcha;
  1. La dernière étape consiste à générer l'image du code de vérification générée et à définir les informations d'en-tête correspondantes. L'exemple de code est le suivant :
header('Content-type: image/png');
imagepng($image);
imagedestroy($image);

Conclusion

Grâce aux étapes ci-dessus, nous avons réussi à générer une image de code de vérification simple et à l'afficher sur la page Web. Chaque fois que l'utilisateur actualise la page, il recevra un nouveau code de vérification pour garantir l'unicité et la sécurité du code de vérification. Dans des applications pratiques, nous pouvons comparer le code de vérification saisi par l'utilisateur avec le code de vérification stocké dans la session pour vérifier l'identité de l'utilisateur.

Il s'agit d'un exemple simple de PHP générant une image de code de vérification. Vous pouvez encore améliorer et étendre cette fonction en fonction de vos propres besoins. J'espère que cet article vous aidera à comprendre et à appliquer la technologie des codes de vérification !

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