Maison  >  Article  >  développement back-end  >  Conseils pour générer des images de code de vérification colorées à l'aide de la bibliothèque PHP et GD

Conseils pour générer des images de code de vérification colorées à l'aide de la bibliothèque PHP et GD

WBOY
WBOYoriginal
2023-07-14 23:05:141557parcourir

Conseils pour générer des images de code de vérification colorées à l'aide des bibliothèques PHP et GD

Introduction :
Le code de vérification est une technologie de sécurité réseau courante. En obligeant les utilisateurs à saisir un code de vérification lors de la connexion, de l'inscription ou de la soumission d'un formulaire, vous pouvez empêcher efficacement les attaques automatisées de robots et de programmes malveillants. Cet article présentera les techniques d'utilisation des bibliothèques PHP et GD pour générer des images de code de vérification colorées, aidant ainsi les développeurs à ajouter un certain degré de reconnaissabilité et de sens artistique lors de la création de codes de vérification.

1. Préparation de l'environnement
Avant de commencer, assurez-vous que les bibliothèques PHP et GD ont été installées dans votre environnement de développement. Vous pouvez installer la bibliothèque GD en entrant la commande suivante dans le terminal :

sudo apt-get update
sudo apt-get install php7.4-gd

2. Générer des lignes d'interférence
Avant de générer le code de vérification, nous pouvons d'abord générer quelques lignes d'interférence pour augmenter la complexité et la lisibilité du code de vérification. Voici un exemple de code pour générer des lignes d'interférence :

// 创建一个画布
$width = 120;
$height = 40;
$image = imagecreatetruecolor($width, $height);

// 生成两条随机干扰线
for ($i = 0; $i < 2; $i++) {
    $lineColor = imagecolorallocate($image, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255));
    imageline($image, 0, mt_rand(0, $height), $width, mt_rand(0, $height), $lineColor);
}

// 输出图片
header("Content-type: image/png");
imagepng($image);
imagedestroy($image);

3. Générer un code de vérification
Ensuite, nous pouvons commencer à générer des codes de vérification. Voici un exemple de code qui génère un code de vérification à quatre chiffres :

session_start();

$width = 120;
$height = 40;
$length = 4;
$font = 'path/to/your/font.ttf'; // 设置字体文件的路径

// 创建一个画布
$image = imagecreatetruecolor($width, $height);

// 设置背景颜色
$bgColor = imagecolorallocate($image, 255, 255, 255);
imagefilledrectangle($image, 0, 0, $width, $height, $bgColor);

// 生成四位数字验证码
$code = '';
for ($i = 0; $i < $length; $i++) {
    $textColor = imagecolorallocate($image, mt_rand(0, 200), mt_rand(0, 200), mt_rand(0, 200));
    $digit = mt_rand(0, 9);
    $code .= $digit;
    imagettftext($image, 20, mt_rand(-30, 30), ($width / $length) * $i + 10, ($height + 20) / 2, $textColor, $font, $digit);
}

// 保存验证码到session中
$_SESSION['captcha'] = $code;

// 输出图片
header("Content-type: image/png");
imagepng($image);
imagedestroy($image);

4. Utilisez le code de vérification
Dans votre formulaire, vous pouvez ajouter une zone de saisie permettant à l'utilisateur de saisir le code de vérification et de vérifier en arrière-plan si le Le code de vérification saisi par l'utilisateur est Il est cohérent avec le code de vérification généré précédemment. Voici un exemple simple :

<form action="submit.php" method="post">
    <label for="captcha">验证码:</label>
    <input type="text" id="captcha" name="captcha" required>
    <img src="captcha.php" alt="验证码">
    <input type="submit" value="提交">
</form>

et vérifiez le code de vérification dans submit.php :

session_start();

if ($_POST['captcha'] == $_SESSION['captcha']) {
    // 验证码正确,进行后续操作
} else {
    // 验证码错误,给出相应提示
}

Conclusion :
Cet article présente les techniques d'utilisation de PHP et de la bibliothèque GD pour générer des images de code de vérification colorées, en générant des lignes et des polices d'interférence. La randomisation des couleurs augmente la complexité et la lisibilité du code de vérification. Espérons que ces conseils aideront les développeurs à créer des captchas plus sécurisés et plus beaux.

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