Maison >développement back-end >tutoriel php >PHP implémente la génération et la vérification de code de vérification d'image
PHP implémente la génération et la vérification de codes de vérification d'image
Dans le développement de sites Web, afin d'éviter les attaques de machines malveillantes ou l'enregistrement automatique, nous utilisons souvent des codes de vérification d'image pour la vérification. Cet article expliquera comment utiliser PHP pour générer et vérifier des codes de vérification d'image, et donnera des exemples de code spécifiques.
La clé pour générer un code de vérification d'image est de générer une chaîne de code de vérification aléatoire et de la dessiner sur l'image. Voici un exemple de code pour générer un code de vérification d'image :
<?php session_start(); // 声明图片尺寸 $image_width = 100; $image_height = 40; // 创建图片资源 $image = imagecreatetruecolor($image_width, $image_height); // 生成背景颜色 $bg_color = imagecolorallocate($image, mt_rand(200, 255), mt_rand(200, 255), mt_rand(200, 255)); imagefill($image, 0, 0, $bg_color); // 生成验证码字符串 $chars = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz23456789'; $code = ''; for ($i = 0; $i < 4; $i++) { $code .= $chars[mt_rand(0, strlen($chars) - 1)]; } // 将验证码字符串保存到session中,用于验证 $_SESSION['captcha'] = $code; // 绘制验证码文字 $font_file = 'path_to_your_font.ttf'; // 替换为你自己的字体文件路径 $text_color = imagecolorallocate($image, 0, 0, 0); // 文字颜色为黑色 imagettftext($image, 20, 0, 10, 30, $text_color, $font_file, $code); // 输出图片 header('Content-Type: image/png'); imagepng($image); imagedestroy($image); ?>
Dans le code ci-dessus, créez d'abord une ressource d'image avec une largeur et une hauteur spécifiées via la fonction imagecreatetruecolor
, puis utilisez le Fonction imagecolorallocate
Générez une couleur d'arrière-plan et remplissez toute l'image, puis utilisez la fonction imagettftext
à l'emplacement spécifié pour dessiner la chaîne de code de vérification sur l'image. Enfin, l'image générée est sortie via la fonction imagepng
. imagecreatetruecolor
函数创建一个指定宽度和高度的图片资源,然后使用imagecolorallocate
函数生成背景颜色并填充整个图片,接着在指定位置使用imagettftext
函数将验证码字符串绘制到图片上。最后,将生成的图片通过imagepng
函数输出。
验证图片验证码需要与用户输入的验证码进行比较。以下是一个验证图片验证码的示例代码:
<?php session_start(); // 获取用户输入的验证码字符串 $user_input = $_POST['captcha']; // 获取保存在session中的验证码字符串 $server_code = $_SESSION['captcha']; // 验证用户输入的验证码与保存的验证码是否一致 if (strcasecmp($user_input, $server_code) === 0) { // 验证码正确,执行相应的操作 // ... echo "验证码正确"; } else { // 验证码错误,提示用户重新输入 echo "验证码错误"; } ?>
上述代码中,首先使用session_start
函数开启session,然后通过$_POST
超全局数组获取用户输入的验证码字符串,再使用$_SESSION
超全局数组获取保存在session中的验证码字符串。最后,通过strcasecmp
函数比较两个字符串是否相等,如果相等则表示验证码正确,执行相应的操作,如果不相等则表示验证码错误,提示用户重新输入。
通过以上两段代码,我们可以实现图片验证码的生成和验证。可以将生成图片验证码的代码保存为一个独立的文件,例如captcha.php
session_start
pour ouvrir la session, puis obtenez la saisie de l'utilisateur via le $ _POST
chaîne de code de vérification du tableau super global, puis utilisez le tableau super global $_SESSION
pour obtenir la chaîne de code de vérification stockée dans la session. Enfin, la fonction strcasecmp
est utilisée pour comparer si les deux chaînes sont égales, cela signifie que le code de vérification est correct et l'opération correspondante sera effectuée si elles ne sont pas égales. cela signifie que le code de vérification est erroné et l'utilisateur sera invité à le saisir à nouveau. 🎜🎜Avec les deux morceaux de code ci-dessus, nous pouvons générer et vérifier les codes de vérification d'image. Vous pouvez enregistrer le code pour générer des codes de vérification d'image dans un fichier séparé, tel que captcha.php
. Lorsque vous devez générer un code de vérification, vous pouvez accéder directement au fichier. Le code de vérification du code de vérification de l'image peut être placé sur une page de traitement de soumission de formulaire spécifique. 🎜🎜J'espère que l'exemple de code contenu dans cet article pourra vous aider à générer et à vérifier les codes de vérification d'image. Bien entendu, dans les applications réelles, vous devrez peut-être également ajouter certaines mesures de sécurité, telles que l'ajout de lignes d'interférence, le cryptage des codes de vérification, etc. 🎜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!