Maison  >  Article  >  développement back-end  >  Comment gérer la situation où le code de vérification PHP ne peut pas être affiché une fois collé

Comment gérer la situation où le code de vérification PHP ne peut pas être affiché une fois collé

PHPz
PHPzoriginal
2024-02-29 13:21:03802parcourir

Comment gérer la situation où le code de vérification PHP ne peut pas être affiché une fois collé

Titre : Résolvez le problème selon lequel le code de vérification PHP ne peut pas être affiché lorsqu'il est collé

Le code de vérification est une méthode de vérification de sécurité couramment utilisée sur les sites Web. Il peut empêcher efficacement les attaques malveillantes lorsque les utilisateurs soumettent des formulaires ou effectuent des opérations de connexion. Cependant, parfois, lorsque vous utilisez PHP pour générer un code de vérification, celui-ci peut ne pas s'afficher une fois collé, ce qui entraîne des désagréments pour l'expérience utilisateur. Cet article explique comment résoudre le problème selon lequel le code de vérification PHP ne peut pas être affiché une fois collé et fournit des exemples de code spécifiques.

1. Analyse du problème

Lorsque vous utilisez PHP pour générer des codes de vérification sur une page Web, la bibliothèque GD ou d'autres fonctions associées sont généralement utilisées pour générer des images de code de vérification. Cependant, dans certains cas, lorsque les utilisateurs collent le code de vérification dans la zone de saisie du code de vérification, ils peuvent rencontrer le problème que le code de vérification ne peut pas être affiché, car le contenu collé n'est pas correctement reconnu comme une image.

2. Solution

Afin de résoudre ce problème, nous pouvons afficher le contenu textuel du code de vérification sur la page tout en générant l'image du code de vérification. De cette façon, même si l’utilisateur ne peut pas afficher l’image correctement, il peut toujours la vérifier par le texte. Voici un exemple de code spécifique :

<?php
session_start();

$width = 120;
$height = 40;
$length = 4;
$str = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$code = '';

for ($i = 0; $i < $length; $i++) {
    $code .= $str[rand(0, strlen($str) - 1)];
}

$_SESSION['captcha'] = $code;

$image = imagecreatetruecolor($width, $height);
$bg_color = imagecolorallocate($image, 255, 255, 255);
$text_color = imagecolorallocate($image, 0, 0, 0);

imagefill($image, 0, 0, $bg_color);
imagettftext($image, 20, 0, 10, 30, $text_color, 'arial.ttf', $code);

header('Content-type: image/png');
imagepng($image);
imagedestroy($image);

Dans le code ci-dessus, un code de vérification aléatoire contenant des caractères majuscules et minuscules et des chiffres est d'abord généré, puis stocké au format $_SESSION['captcha'] 中。同时,利用 GD 库生成验证码图片,将验证码文本写入图片。然后将验证码图片以 image/png et affiché sur la page.

3. Affichage de la page

Sur la page HTML, l'image du code de vérification et le texte du code de vérification peuvent être affichés à l'utilisateur en même temps, comme indiqué ci-dessous :

<form action="verify.php" method="post">
    <img src="captcha.php" alt="captcha" />
    <input type="text" name="captcha" />
    <input type="submit" value="Submit" />
</form>

Dans ce formulaire, l'utilisateur peut voir le code de vérification. image et zone de saisie, soumettez le formulaire pour vérification après avoir entré le code de vérification. Même si l'utilisateur ne peut pas afficher normalement l'image du code de vérification, il peut toujours vérifier l'entrée via le texte du code de vérification.

En résumé, en affichant le texte du code de vérification tout en générant l'image du code de vérification, le problème selon lequel le code de vérification PHP ne peut pas être affiché lorsqu'il est collé peut être résolu et l'expérience utilisateur peut être amélioré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!

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