recherche
Maisondéveloppement back-endtutoriel phpLa bibliothèque GD génère un code de vérification d'image

Nous ne sommes pas étrangers aux codes de vérification, que l'on peut voir partout, tels que : la connexion et l'enregistrement, l'inondation des forums, le brossage des tickets, le piratage des mots de passe, etc. Leur fonction principale est de bloquer les requêtes des machines et de protéger les entreprises contre les interférences. demandes de soumission de machines.

Écrivons une démo de code de vérification ci-dessous. Elle utilise le code de vérification alphanumérique le plus courant, ainsi que des points d'interférence et des lignes d'interférence. Elle est générée en utilisant la bibliothèque GD. Si vous ne l'avez pas installé, veuillez l'installer sur. Google vous-même. , et comment déterminer s'il est installé et activé, veuillez rechercher la bibliothèque GD directement sur la page phpinfo

L'effet est le suivant :

La bibliothèque GD génère un code de vérification dimage

Page d'accueil

<?php
if(isset($_REQUEST["code"])){
    session_start();
    if(strtolower($_POST["code"])==$_SESSION["code"]){
        echo "<script>alert(&#39;正确!&#39;)</script>";
    }else{
        echo "<script>alert(&#39;错误!&#39;)</script>";
    }
}
?>
<!doctype html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>验证码</title>
    <style>
        #code{
            border: 1px solid #ccc;
            vertical-align: bottom;
        }
        #refresh{
            text-decoration: none;
            font-size: .875em;
        }
    </style>
</head>
<body>
<form action="" method="post">
    <p>
        验证码:
        <img  src="/static/imghwm/default1.png"  data-src="code.php?r=<?php echo rand()? alt="La bibliothèque GD génère un code de vérification d'image" >"  class="lazy"   alt="" id="code">
        <a href="javascript:;" id="refresh">看不清?</a>
    </p>
    <p>
        输入验证码:
        <input type="text" name="code">
    </p>
    <input type="submit" value="提交">
    <script>
        document.getElementById("code").onclick = document.getElementById("refresh").onclick = refresh;
        function refresh() {
            document.getElementById(&#39;code&#39;).src=&#39;code.php?r=&#39;+Math.random()
        }
    </script>
</form>
</body>
</html>

Page backend

<?php
//启动session
session_start();
$code = "";         //验证码字符串
$str = "qwertyuiopasdfghjklzxcvbnm1234567890";  //验证码字符取值范围[a-z0-9]
$w = 160;           //图片宽度
$h = 40;            //图片高度
$num = 4;           //验证码字符数
$dotNum = 300;      //干扰点个数
$lineNum = rand(3, 5);         //干扰线条数
$font = "./api/DejaVuSansMono.ttf";     //设置字体文件
$image = imagecreatetruecolor($w, $h);  //创建一张指定宽高的图片
$imageColor = imagecolorallocate($image, 255, 255, 255);   //设置背景图片颜色为白色
imagefill($image, 0, 0, $imageColor);  //填充图片背景
//随机验证码,包含字母和数字
for ($i = 0; $i < $num; $i++) {
    $fontColor = imagecolorallocate($image, rand(0, 120), rand(0, 120), rand(0, 120));  //生成随机字体颜色
    $content = substr($str, rand(0, strlen($str)), 1);      //随机取字符集中的值
    $code .= $content;
    $fontSize = rand(15, 25);                    //字体大小
    $x = $i * $w / $num + rand(5, 10);          //指定生成位置X轴偏移量
    $y = rand(20, 30);                          //指定生成位置Y轴偏移量
    imagettftext($image, $fontSize, 0, $x, $y, $fontColor, $font, $content);
}
$_SESSION["code"] = $code;  //保存验证码字符串到session中
//生成干扰点
for ($i = 0; $i < $dotNum; $i++) {
    $dotColor = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
    imagesetpixel($image, rand(0, $w), rand(0, $h), $dotColor);
}
//生成干扰线
for ($i = 0; $i < $lineNum; $i++) {
    $lineColor = imagecolorallocate($image, rand(0, 100), rand(0, 100), rand(0, 100));
    imageline($image, rand(0, $w), rand(0, $h), rand(0, $w), rand(0, $h), $lineColor);
}
header("content-type:image/png");
imagepng($image);
imagedestroy($image);

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
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Quelle est la forme complète de PHP?Quelle est la forme complète de PHP?Apr 28, 2025 pm 04:58 PM

L'article traite de PHP, détaillant sa forme complète, les principales utilisations du développement Web, la comparaison avec Python et Java, et sa facilité d'apprentissage pour les débutants.

PHP est-il un langage sensible à la cas?PHP est-il un langage sensible à la cas?Apr 28, 2025 pm 04:55 PM

La sensibilité à la caisse de PHP varie: les fonctions sont insensibles, tandis que les variables et les classes sont sensibles. Les meilleures pratiques incluent la dénomination cohérente et l'utilisation de fonctions insensibles à des cas pour les comparaisons.

Comment redirigez-vous une page en PHP?Comment redirigez-vous une page en PHP?Apr 28, 2025 pm 04:54 PM

L'article traite de diverses méthodes de redirection de pages en PHP, en se concentrant sur la fonction d'en-tête () et en abordant des problèmes communs tels que "les en-têtes ont déjà envoyé" des erreurs.

Qu'est-ce que l'APD dans PHP?Qu'est-ce que l'APD dans PHP?Apr 28, 2025 pm 04:51 PM

L'article traite des objets de données PHP (PDO), une extension pour l'accès à la base de données dans PHP. Il met en évidence le rôle de PDO dans l'amélioration de la sécurité grâce à des instructions préparées et à ses avantages sur MySQLI, y compris l'abstraction de la base de données et une meilleure gestion des erreurs.

Qu'est-ce que Memcache et Memcached en PHP? Est-il possible de partager une seule instance d'un Memcache entre plusieurs projets de PHP?Qu'est-ce que Memcache et Memcached en PHP? Est-il possible de partager une seule instance d'un Memcache entre plusieurs projets de PHP?Apr 28, 2025 pm 04:47 PM

MemCache et Memcached sont des systèmes de mise en cache PHP qui accélèrent les applications Web en réduisant la charge de base de données. Une seule instance peut être partagée entre des projets avec une gestion clé.

Quelles sont les étapes pour créer une nouvelle base de données à l'aide de MySQL et PHP?Quelles sont les étapes pour créer une nouvelle base de données à l'aide de MySQL et PHP?Apr 28, 2025 pm 04:44 PM

L'article traite des étapes pour créer et gérer les bases de données MySQL à l'aide de PHP, en se concentrant sur la connexion, la création, les erreurs courantes et les mesures de sécurité.

JavaScript interagit-il avec PHP?JavaScript interagit-il avec PHP?Apr 28, 2025 pm 04:43 PM

L'article explique comment JavaScript et PHP interagissent indirectement via les demandes HTTP en raison de leurs différents environnements. Il couvre les méthodes pour l'envoi de données de JavaScript à PHP et met en évidence des considérations de sécurité comme la validation des données et le prot

Comment exécuter un script PHP à partir de la ligne de commande?Comment exécuter un script PHP à partir de la ligne de commande?Apr 28, 2025 pm 04:41 PM

L'article traite de l'exécution de scripts PHP à partir de la ligne de commande, y compris des étapes, des options communes, des erreurs de dépannage et des considérations de sécurité.

See all articles

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 Linux nouvelle version

SublimeText3 Linux nouvelle version

Dernière version de SublimeText3 Linux

DVWA

DVWA

Damn Vulnerable Web App (DVWA) est une application Web PHP/MySQL très vulnérable. Ses principaux objectifs sont d'aider les professionnels de la sécurité à tester leurs compétences et leurs outils dans un environnement juridique, d'aider les développeurs Web à mieux comprendre le processus de sécurisation des applications Web et d'aider les enseignants/étudiants à enseigner/apprendre dans un environnement de classe. Application Web sécurité. L'objectif de DVWA est de mettre en pratique certaines des vulnérabilités Web les plus courantes via une interface simple et directe, avec différents degrés de difficulté. Veuillez noter que ce logiciel

MantisBT

MantisBT

Mantis est un outil Web de suivi des défauts facile à déployer, conçu pour faciliter le suivi des défauts des produits. Cela nécessite PHP, MySQL et un serveur Web. Découvrez nos services de démonstration et d'hébergement.

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire