Avec le développement d'Internet, la sécurité des sites Web fait l'objet de plus en plus d'attention. Parmi eux, les codes de vérification d’image sont largement utilisés dans l’enregistrement des utilisateurs, la connexion et d’autres scénarios pour empêcher les opérations automatisées par des robots malveillants. Cet article explique comment utiliser PHP pour développer et implémenter une fonction simple de code de vérification d'image.
1. Qu'est-ce que le code de vérification d'image
Le code de vérification d'image est une méthode d'authentification de sécurité basée sur l'image. Une chaîne aléatoire généralement composée de chiffres et de lettres est affichée dans une image, obligeant l'utilisateur à l'identifier correctement et à la saisir dans la saisie. boîte . Ce n'est que lorsque l'utilisateur saisit le code de vérification correct que les opérations ultérieures peuvent se poursuivre, empêchant ainsi efficacement les attaques automatisées et les abus de robots malveillants.
2. Préparation de l'environnement de développement
Avant de commencer le développement, nous devons préparer un environnement de développement PHP. Vous pouvez choisir de créer un environnement d'exécution PHP localement ou d'utiliser certains environnements de développement intégrés (IDE) tels que XAMPP, WAMP, etc.
3. 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 contenant une chaîne aléatoire. PHP fournit la bibliothèque GD, qui peut être utilisée pour générer et manipuler des images.
Ce qui suit est un exemple de fonction simple pour générer une image de code de vérification :
function generateCaptcha($length = 4, $width = 100, $height = 40) { $code = ''; $charset = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charset_length = strlen($charset); // 生成随机字符串 for ($i = 0; $i < $length; $i++) { $code .= $charset[random_int(0, $charset_length - 1)]; } // 创建画布 $image = imagecreatetruecolor($width, $height); // 设置背景色和文本颜色 $bg_color = imagecolorallocate($image, 255, 255, 255); $text_color = imagecolorallocate($image, 0, 0, 0); // 填充背景色 imagefill($image, 0, 0, $bg_color); // 写入验证码文本 $font_size = 20; $x = ($width - $font_size * $length) / 2; $y = ($height + $font_size) / 2; for ($i = 0; $i < $length; $i++) { $angle = random_int(-30, 30); imagettftext($image, $font_size, $angle, $x, $y, $text_color, 'path/to/font.ttf', $code[$i]); $x += $font_size; } // 添加干扰线 for ($i = 0; $i < 5; $i++) { $line_color = imagecolorallocate($image, random_int(0, 255), random_int(0, 255), random_int(0, 255)); imageline($image, random_int(0, $width), random_int(0, $height), random_int(0, $width), random_int(0, $height), $line_color); } // 输出图像 header('Content-Type: image/png'); imagepng($image); // 销毁图像资源 imagedestroy($image); // 返回验证码字符串 return $code; }
La fonction ci-dessus génère une image de code de vérification avec une longueur, une largeur et une hauteur spécifiées en appelant la fonction fournie par la bibliothèque GD, et ajoute un résultat aléatoire chaîne et ligne d'interférence.
4. Utilisez la fonction de code de vérification
Pour utiliser la fonction de code de vérification sur une page Web, vous devez intégrer l'image du code de vérification générée dans HTML et la vérifier lorsque l'utilisateur soumet le formulaire.
Ce qui suit est un exemple simple de code de vérification :
<!DOCTYPE html> <html> <head> <title>验证码示例</title> </head> <body> <form action="verify.php" method="POST"> <label for="captcha">验证码:</label> <input type="text" name="captcha" id="captcha"> <img src="captcha.php" alt="验证码"> <input type="submit" value="提交"> </form> </body> </html>
Dans le code HTML ci-dessus, nous avons ajouté une zone de saisie, une image de code de vérification et un bouton d'envoi au formulaire. L'attribut src de l'image du code de vérification pointe vers un fichier nommé captcha.php, qui est utilisé pour générer dynamiquement l'image du code de vérification.
Voici un exemple de code du fichier captcha.php :
session_start(); $code = generateCaptcha(); // 调用生成验证码函数生成随机字符串 // 将验证码保存在session中 $_SESSION['captcha'] = $code; // 输出验证码图片 header('Content-Type: image/png'); imagepng($image);
Dans le fichier captcha.php, nous encapsulons le processus de génération du code de vérification dans une fonction et enregistrons la chaîne aléatoire générée dans la session.
Lorsque le formulaire est soumis, nous devons vérifier le code de vérification saisi par l'utilisateur, comme indiqué ci-dessous :
session_start(); $captcha = $_POST['captcha']; // 获取用户输入的验证码 $code = $_SESSION['captcha']; // 获取保存在session中的验证码 // 比较用户输入的验证码和保存在session中的验证码 if (strtolower($captcha) === strtolower($code)) { // 验证码输入正确 echo "验证码输入正确"; } else { // 验证码输入错误 echo "验证码输入错误"; } // 清空保存在session中的验证码 unset($_SESSION['captcha']);
Dans le code ci-dessus, nous comparons le code de vérification saisi par l'utilisateur avec le code de vérification enregistré dans la session. S'ils sont égaux, cela signifie que le code de vérification est saisi correctement, sinon cela signifie que le code de vérification est mal saisi.
Grâce aux étapes ci-dessus, nous avons mis en œuvre avec succès une fonction simple de code de vérification d'image. Dans les projets réels, la longueur, le jeu de caractères et la taille de l'image du code de vérification peuvent être personnalisés en fonction des besoins d'amélioration de la sécurité. De plus, afin de prévenir les attaques de robots malveillants, certaines restrictions peuvent être ajoutées au processus de vérification, comme limiter le nombre de tentatives des utilisateurs dans un délai spécifié, ajouter un mécanisme de rafraîchissement du code de vérification, etc.
Résumé
Cet article explique comment utiliser PHP pour développer et implémenter une fonction de code de vérification d'image simple. En utilisant la bibliothèque GD pour générer une chaîne aléatoire, l'intégrer dans l'image du code de vérification, puis enregistrer le code de vérification dans la session pour vérification, cela empêche efficacement les opérations automatisées par des robots malveillants. J'espère que cet article vous sera utile, merci d'avoir lu !
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!