Développement PHP : Comment implémenter la fonction de code de vérification d'image

PHPz
Libérer: 2023-09-20 16:02:02
original
1077 Les gens l'ont consulté

Développement PHP : Comment implémenter la fonction de code de vérification dimage

Développement PHP : Comment implémenter la fonction de code de vérification d'image

En développement WEB, afin de prévenir les robots ou les attaques malveillantes, il est souvent nécessaire d'utiliser des codes de vérification pour vérifier l'identité de l'utilisateur. Parmi eux, le code de vérification d'image est un type courant de code de vérification, qui peut non seulement identifier efficacement les utilisateurs, mais également améliorer l'expérience utilisateur. Cet article expliquera comment utiliser PHP pour implémenter la fonction de code de vérification d'image et fournira des exemples de code spécifiques.

1. Générer une image de code de vérification

Tout d'abord, nous devons générer une image de code de vérification avec des caractères aléatoires. PHP fournit la bibliothèque GD pour générer facilement des images. Voici un exemple de fonction qui génère une image de code de vérification :

function generateCaptchaImage($length = 4, $width = 120, $height = 40, $font = 'path/to/font.ttf'){
    $image = imagecreatetruecolor($width, $height);
    $bgColor = imagecolorallocate($image, 255, 255, 255);
    $textColor = imagecolorallocate($image, 0, 0, 0);
    $code = generateRandomCode($length); // 生成随机验证码

    imagefill($image, 0, 0, $bgColor);
    imagettftext($image, 20, 0, 10, 30, $textColor, $font, $code); // 在图片上写入验证码

    // 添加干扰线
    for ($i = 0; $i < 5; $i++) {
        $color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
        imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $color);
    }

    // 输出图像
    header('Content-type: image/png');
    imagepng($image);
    imagedestroy($image);
    
    return $code;
}

function generateRandomCode($length = 4){
    $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890';
    $code = '';
    
    for ($i = 0; $i < $length; $i++) {
        $code .= $characters[rand(0, strlen($characters) - 1)];
    }
    
    return $code;
}
Copier après la connexion

La fonction ci-dessus generateCaptchaImage est utilisée pour générer une image de code de vérification et renvoie la chaîne de code de vérification comme valeur de retour de la fonction. generateCaptchaImage用于生成验证码图片,并将验证码字符串作为函数返回值。

二、显示验证码图片与验证用户输入

在要显示验证码的页面中,可以通过<img alt="Développement PHP : Comment implémenter la fonction de code de vérification d'image" >标签来显示验证码图片,并使用session来保存验证码。

session_start();
$captcha = generateCaptchaImage();
$_SESSION['captcha'] = $captcha;
Copier après la connexion

创建一个验证码输入框和提交按钮:

<form action="verify.php" method="POST">
  <img src="captcha.php" alt="captcha image">
  <input type="text" name="captcha" placeholder="请输入验证码">
  <button type="submit">提交</button>
</form>
Copier après la connexion

验证用户输入的验证码:

session_start();
$captcha = $_SESSION['captcha'];

if(isset($_POST['captcha']) && $_POST['captcha'] == $captcha){
    // 验证成功
    echo "验证码输入正确!";
} else {
    // 验证失败
    echo "验证码输入错误!";
}
Copier après la connexion

三、验证码校验和过期处理

为了增强验证码的安全性,我们还可以添加过期时间和校验码处理。以下是一个增强版的验证码验证示例:

session_start();
if(isset($_POST['captcha']) && isset($_SESSION['captcha'])){
    $captcha = $_SESSION['captcha'];
    $inputCaptcha = $_POST['captcha'];
    
    if(time() - $_SESSION['captcha_time'] > 300){ // 验证码过期时间为5分钟
        echo "验证码已过期,请重新输入!";
        return;
    }

    if(strtolower($inputCaptcha) === strtolower($captcha)){
        echo "验证码输入正确!";
    } else {
        echo "验证码输入错误!";
    }
} else{
    echo "请输入验证码!";
}
Copier après la connexion

在生成验证码时,将当前时间也保存到$_SESSION

2. Affichez l'image du code de vérification et vérifiez la saisie de l'utilisateur

Dans la page où le code de vérification doit être affiché, vous pouvez afficher l'image du code de vérification via la balise <img alt="Développement PHP : Comment implémenter la fonction de code de vérification d'image" > et utiliser session< /code> pour enregistrer le code de vérification. <p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>session_start(); $captcha = generateCaptchaImage(); $_SESSION['captcha'] = $captcha; $_SESSION['captcha_time'] = time();</pre><div class="contentsignin">Copier après la connexion</div></div>Créez une zone de saisie du code de vérification et un bouton d'envoi : <p>rrreee</p>Vérifiez le code de vérification saisi par l'utilisateur : <p>rrreee</p>3. Vérification du code de vérification et traitement de l'expiration🎜🎜Afin d'améliorer la sécurité du code de vérification, nous peut également ajouter un délai d'expiration et un traitement de la somme de contrôle. Ce qui suit est une version améliorée de l'exemple de vérification du code de vérification : 🎜rrreee🎜Lors de la génération du code de vérification, enregistrez l'heure actuelle dans <code>$_SESSION : 🎜rrreee🎜Le code ci-dessus vérifiera l'heure d'expiration et la vérification. Après avoir vérifié le code, les informations d'invite correspondantes seront affichées. 🎜🎜Résumé : 🎜🎜Grâce aux étapes ci-dessus, nous pouvons utiliser PHP pour implémenter la fonction de code de vérification d'image. Tout d'abord, une image de code de vérification avec des caractères aléatoires est générée et affichée sur la page. Ensuite, le code de vérification saisi par l'utilisateur est comparé au code de vérification enregistré sur le serveur pour déterminer si la saisie est correcte. Dans le même temps, afin d'augmenter la sécurité du code de vérification, vous pouvez définir le délai d'expiration et ajouter le traitement du code de vérification. La mise en œuvre de la fonction de code de vérification peut être utilisée dans des opérations sensibles telles que l'enregistrement et la connexion des utilisateurs pour améliorer la sécurité du système et l'expérience utilisateur. 🎜🎜Remarque : Pour que le code ci-dessus s'exécute normalement, vous devez vous assurer que la bibliothèque GD a été correctement installée. 🎜

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!