Maison  >  Article  >  développement back-end  >  Comment utiliser PHP pour implémenter le code de vérification et les fonctions de reconnaissance graphique

Comment utiliser PHP pour implémenter le code de vérification et les fonctions de reconnaissance graphique

WBOY
WBOYoriginal
2023-09-05 10:37:101739parcourir

如何使用 PHP 实现验证码和图形识别功能

Comment utiliser PHP pour implémenter des fonctions de code de vérification et de reconnaissance de formes

Captcha est un mécanisme de vérification en ligne courant utilisé pour confirmer que l'utilisateur est un utilisateur réel et non un script automatisé ou un malware. Les codes de vérification sont souvent rencontrés lors de l'inscription sur un site Web, de la connexion, de la réinitialisation du mot de passe et d'autres opérations. En identifiant les codes de vérification, nous pouvons empêcher les attaques malveillantes de robots et l'envoi de messages de spam. Cet article expliquera comment utiliser PHP pour implémenter le code de vérification et les fonctions de reconnaissance graphique.

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

Tout d'abord, nous devons générer une image de code de vérification que les utilisateurs pourront identifier. Vous trouverez ci-dessous une simple fonction PHP qui génère un code de vérification composé de chiffres et de lettres.

<?php
session_start();

function generateCaptcha($length = 4) {
    $chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
    $captcha = '';
    for ($i = 0; $i < $length; $i++) {
        $captcha .= $chars[rand(0, strlen($chars) - 1)];
    }
    $_SESSION['captcha'] = $captcha; // 将验证码保存到 session 中
    return $captcha;
}
  1. Afficher l'image du code de vérification

Après avoir généré le code de vérification, nous devons l'afficher sur la page Web pour que l'utilisateur puisse le saisir. Vous trouverez ci-dessous un simple script PHP qui génère une image captcha et l'affiche dans le navigateur.

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

$captcha = generateCaptcha(); // 生成验证码

$width = 80; // 图像宽度
$height = 40; // 图像高度

$image = imagecreate($width, $height); // 创建图像

$background = imagecolorallocate($image, 255, 255, 255); // 设置图像背景色为白色
$textColor = imagecolorallocate($image, 0, 0, 0); // 设置文本颜色为黑色

// 将验证码绘制到图像上
imagestring($image, 5, 10, 12, $captcha, $textColor);

imagepng($image); // 输出图像
imagedestroy($image); // 销毁图像
?>
  1. Vérifiez le code de vérification saisi

Une fois que l'utilisateur voit l'image du code de vérification dans le navigateur, il doit saisir le code de vérification pour continuer. Vous trouverez ci-dessous une fonction PHP simple pour vérifier que le code de vérification saisi par l'utilisateur est correct.

<?php
session_start();

function validateCaptcha($input) {
    if (isset($_SESSION['captcha'])) {
        $captcha = $_SESSION['captcha'];
        unset($_SESSION['captcha']); // 验证码只能使用一次
        return strtolower($input) === strtolower($captcha);
    }
    return false;
}
  1. Fonction de reconnaissance graphique

Parfois, l'image du code de vérification utilisera une distorsion complexe, des interférences et d'autres effets pour empêcher la reconnaissance automatique. Dans ce cas, nous pouvons utiliser la technologie de reconnaissance de formes pour identifier automatiquement le code de vérification. Vous trouverez ci-dessous une fonction PHP simple qui reconnaît une image CAPTCHA.

<?php
function recognizeCaptcha($imagePath) {
    $image = imagecreatefrompng($imagePath);
    $width = imagesx($image);
    $height = imagesy($image);

    $captcha = '';
    for ($i = 0; $i < $width; $i++) {
        $color = imagecolorat($image, $i, $height / 2);
        $r = ($color >> 16) & 0xFF;
        $g = ($color >> 8) & 0xFF;
        $b = $color & 0xFF;
        $brightness = ($r + $g + $b) / (3 * 255);
        $captcha .= ($brightness < 0.5) ? '1' : '0';
    }

    imagedestroy($image);
    return $captcha;
}

Ce qui précède est un exemple simple d'utilisation de PHP pour implémenter des fonctions de code de vérification et de reconnaissance de formes. En générant des CAPTCHA, en affichant des images CAPTCHA, en validant les entrées de l'utilisateur et en utilisant la technologie de reconnaissance de formes, nous pouvons améliorer la sécurité et l'expérience utilisateur de notre site Web. Bien entendu, les applications réelles peuvent impliquer des codes de vérification et des algorithmes de reconnaissance de formes plus complexes, qui doivent être ajustés et optimisés en fonction de circonstances spécifiques.

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