Maison  >  Article  >  développement back-end  >  PHP implémente la génération et la vérification de code de vérification

PHP implémente la génération et la vérification de code de vérification

王林
王林original
2023-06-18 10:30:341465parcourir

PHP est un langage de script côté serveur couramment utilisé qui est non seulement puissant mais également facile à apprendre et à écrire. Lors du développement de sites Web, la génération et la vérification des codes de vérification sont des mesures de sécurité très importantes. Dans cet article, nous présenterons comment utiliser PHP pour générer et vérifier les codes de vérification.

1. Qu'est-ce qu'un code de vérification ?

CAPTCHA est l'abréviation de "Test de Turing public entièrement automatisé pour distinguer les ordinateurs des humains". Il s'agit d'un mécanisme de vérification en ligne courant utilisé pour garantir que les utilisateurs sont de vraies personnes et non des robots. Un code de vérification consiste généralement en une image ou un son qui oblige l'utilisateur à saisir la bonne réponse pour prouver qu'il est un véritable utilisateur.

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

En PHP, le processus de génération d'images de code de vérification est divisé en plusieurs étapes. Tout d’abord, nous devons générer une image d’arrière-plan aléatoire et y tracer des lignes d’interférence et des points de bruit pour augmenter la sécurité du code de vérification. Ensuite, nous utilisons la bibliothèque GD pour dessiner des caractères générés aléatoirement sur l'image, et enfin générer l'image.

Ce qui suit est un exemple de code qui peut générer une simple image de code de vérification à 4 chiffres :

<?php
session_start();
header("Content-type: image/png");

$width = 100;
$height = 40;
$length = 4;

// 生成验证码字符串
$chars = "0123456789";
$str = "";
for ($i = 0; $i < $length; $i++) {
    $str .= substr($chars, mt_rand(0, strlen($chars)-1), 1);
}

// 保存验证码到Session
$_SESSION["captcha"] = $str;

// 创建图像对象并绘制背景
$im = imagecreatetruecolor($width, $height);
$bgColor = imagecolorallocate($im, 242, 242, 242);
imagefill($im, 0, 0, $bgColor);

// 添加干扰线
$lineColor = imagecolorallocate($im, 200, 200, 200);
for ($i = 0; $i < 6; $i++) {
    imageline($im, 0, mt_rand(0, $height), $width, mt_rand(0, $height), $lineColor);
}

// 添加噪点
$pixelColor = imagecolorallocate($im, 0, 0, 0);
for ($i = 0; $i < 50; $i++) {
    imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pixelColor);
}

// 绘制验证码字符串
$font = 5;
$fontColor = imagecolorallocate($im, 0, 0, 0);
$fontWidth = imagefontwidth($font);
$fontHeight = imagefontheight($font);
$x = ($width - $fontWidth * $length) / 2;
$y = ($height - $fontHeight) / 2;
for ($i = 0; $i < $length; $i++) {
    $char = substr($str, $i, 1);
    imagechar($im, $font, $x + $fontWidth * $i, $y, $char, $fontColor);
}

// 输出图像
imagepng($im);
imagedestroy($im);
?>

3. Code de vérification de vérification

Après avoir généré l'image du code de vérification, nous devons vérifier le code de vérification saisi par l'utilisateur lors de la soumission. la forme. En PHP, nous pouvons vérifier en comparant le code de vérification saisi par l'utilisateur avec le code de vérification enregistré dans la session.

Ce qui suit est un exemple de code qui peut vérifier le code de vérification saisi par l'utilisateur et afficher les informations associées :

<?php
session_start();

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $captcha = $_POST["captcha"];
    if (!empty($captcha) && strtolower($captcha) == strtolower($_SESSION["captcha"])) {
        echo "验证码输入正确!";
    } else {
        echo "验证码输入错误!"; 
    }
}
?>
<form method="post">
    <input type="text" name="captcha" placeholder="请输入验证码">
    <img src="captcha.php" onclick="this.src='captcha.php?t='+Math.random()">
    <input type="submit" value="提交">
</form>

Dans ce code, nous avons ajouté une zone de saisie d'image et un bouton "Actualiser" au formulaire. Lorsque l'utilisateur clique sur le bouton « Actualiser », une nouvelle image captcha sera générée aléatoirement. Après les saisies de l'utilisateur, le code de vérification sera vérifié après avoir cliqué sur le bouton « Soumettre ».

4. Conclusion

Réaliser la génération et la vérification de codes de vérification via PHP peut empêcher efficacement les robots ou les attaquants malveillants d'attaquer le site Web. Grâce à l'exemple de code ci-dessus, nous pouvons voir que le processus d'implémentation du code de vérification dans le code PHP est également très simple. Surtout lors de l'utilisation de la bibliothèque GD pour générer des images, le code peut être rendu plus concis. Par conséquent, l’utilisation du code PHP pour générer des codes de vérification peut protéger plus efficacement la confidentialité et la sécurité de votre site Web et de vos utilisateurs.

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