Heim > Backend-Entwicklung > PHP-Problem > So implementieren Sie einen Bildverifizierungscode in PHP

So implementieren Sie einen Bildverifizierungscode in PHP

藏色散人
Freigeben: 2023-03-13 06:02:02
Original
4622 Leute haben es durchsucht

So implementieren Sie den Bildverifizierungscode in PHP: 1. Laden Sie die GD-Erweiterung. 2. Erstellen Sie eine Leinwand und fügen Sie der Leinwand Inhalte hinzu. 4. Geben Sie Ressourcen frei .

So implementieren Sie einen Bildverifizierungscode in PHP

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP Version 7.1, DELL G3-Computer.

Wie implementiert man Bildverifizierungscode in PHP?

PHP implementiert die Bildverifizierungscode-Funktion

Verifizierungscode: Captcha, ist eine Technologie zur Unterscheidung von Menschen und Computern
Prinzip (vollständig automatisierter öffentlicher Turing-Test zur Unterscheidung von Computern und Menschen) Computer und Menschen auseinander (Turing-Test) Bilder.

Die Essenz des Verifizierungscodes: Drucken Sie Textinhalte auf Bilder, um den Unterschied zwischen Computern und Menschen zu erkennen.

PHP selbst kann keine Bilder bedienen.

PHP kann die bereitgestellten Bilderweiterungen verwenden, um Bilder zu bedienen .

Bilder Es gibt viele Erweiterungen: Die am häufigsten verwendete ist GD


Laden der GD-Erweiterung: Alle GD-Erweiterungsfunktionen beginnen mit Bild

2. PHP-Operationsbilder

1 )

Bildressource imagecreatetruecolor( Breite, Höhe);

2. Fügen Sie Inhalt (Text) zur Leinwand hinzu

a) Weisen Sie dem Inhalt, der dem Bild hinzugefügt werden soll, eine Farbe zu: Ordnen Sie zunächst die Farbe der Bildressource zu. und dann können Sie das

Farbhandle [integer] ] imagecolorallocate(picture resources, red, green, blue); //Die Farbe kann Zahlen 0-255 oder hexadezimal #hexadecimal

b) verwenden, um Text zu schreiben: nur Englisch (Inhalt der ASCII-Codetabelle)

Boolesche Bildzeichenfolge (Bildressource, Textgröße, Start-X-Koordinate, Start-Y-Koordinate, Schreibinhalt, Farbe);

Schriftgröße: 1-5

3. Speichern Sie die Ausgabe


imagepng(image Ressource[, Speicherort]);

4. Ressourcen freigeben (Ressourcenfreigabe empfehlen)

Boolesches Ergebnisbildzerstören (Bildressource);

//1.    创建画布
$img = imagecreatetruecolor(200,200);
//var_dump($img);

//2.    作画
//2.1   给画布分配颜色
$color = imagecolorallocate($img,255,255,255);
//echo $color;

//2.2   写入文字
$true = imagestring($img,5,50,90,'hello world',$color);
//var_dump($true);

//3.    保存输出内容
//3.1   输出
//告诉浏览器,内容是图片
//header('Content-type:image/png');
//imagepng($img);

//3.2   保存图片
imagepng($img,'hello.png'); // 保存到当前目录

//4.    释放资源
$res = imagedestroy($img);
var_dump($res);
Nach dem Login kopieren

3. Verifizierungscodedaten generieren

2 . Leinwand erstellen

3. Hintergrundfarbe füllen (Bildressource, Startposition X, Startposition Y, Farbgriff): Wenn festgestellt wird, dass die umgebenden Pixel dieselbe Farbe haben wie Das aktuelle Pixel (ganz schwarz) wird automatisch gerendert.

4. Fügen Sie Textinhalte hinzu: Weisen Sie die Ausgabe zu

Zwei zu beachtende Punkte: Zufälliges Chinesisch erhalten: In PHP werden Daten in Bytes verarbeitet. Chinesisch hat unterschiedliche Anzahlen von Bytes in verschiedenen Zeichensätzen Bilder

5. Ressourcen zerstören

//制作验证码图片

//获取验证码字符串
$captcha = '';
for($i = 0;$i < 4;$i++){
    //chr: 将数字转换成对应的字符(ASCII)
    switch(mt_rand(0,2)){
        case 0: //数字
            $captcha .= chr(mt_rand(49,57));
            break;
        case 1:    //大写字母
            $captcha .= chr(mt_rand(65,90));
            break;
        case 2: //小写字母
            $captcha .= chr(mt_rand(97,122));
            break;
    }
}
//echo $captcha;

//创建画布
$img = imagecreatetruecolor(200,200);

//给背景分配颜色
$bg = imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));

//填充背景色
imagefill($img,0,0,$bg);

//循环写入
for($i = 0;$i < 4;$i++){
    //分配文字颜色
    $txt = imagecolorallocate($img,mt_rand(50,150),mt_rand(50,150),mt_rand(50,150));

    //写入文字
    imagestring($img,mt_rand(1,5),60 + $i*20,90,$captcha[$i],$txt);
}

//输出
header(&#39;Content-type:image/png&#39;);
imagepng($img);

//释放资源
imagedestroy($img);
Nach dem Login kopieren

5. Kapselungsüberprüfungscode-Klasse

//中文验证码
header(&#39;Content-type:text/html;charset=utf-8&#39;);

//创建画布
$img = imagecreatetruecolor(200,200);
//给背景分配颜色
$bg = imagecolorallocate($img,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255));
//填充背景色
imagefill($img,0,0,$bg);

//写入内容
for($i = 0;$i < 4;$i++){
    //分配颜色
    $txt = imagecolorallocate($img,mt_rand(50,150),mt_rand(50,150),mt_rand(50,150));

    //获取随机中文
    $string = "今天我寒夜里看雪飘过怀着冷却了的心窝飘远方";
    
    $pos = mt_rand(0,strlen($string) - 1);
    $start = $pos - $pos % 3;        //utf-8取模3,GBK取模2

    //取三个长度(字符串截取)
    $target = substr($string,$start,3);

    //写入中文
    imagettftext($img,mt_rand(20,40),mt_rand(-45,45),40 + $i * 30, mt_rand(80,120),$txt,&#39;simple.ttf&#39;,$target);

}

//输出图片
header(&#39;Content-type:image/png&#39;);
imagepng($img);

//销毁资源
imagedestroy($img);
Nach dem Login kopieren

Empfohlenes Lernen: „

PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo implementieren Sie einen Bildverifizierungscode in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage