Heim  >  Artikel  >  Backend-Entwicklung  >  Generieren Sie einen Bildverifizierungscode mithilfe der PHP- und GD-Bibliothek

Generieren Sie einen Bildverifizierungscode mithilfe der PHP- und GD-Bibliothek

WBOY
WBOYOriginal
2023-05-11 08:34:35991Durchsuche

Mit der Entwicklung des Internets müssen immer mehr Websites Bestätigungscodes verwenden, um böswillige Registrierungen, Crawler und andere Verhaltensweisen zu verhindern. Der Bildbestätigungscode ist eine gängige Form des Bestätigungscodes. Er zeigt ein Bild mit zufälligen Zeichen oder Zahlen an und ermöglicht es Benutzern, den richtigen Bestätigungscode einzugeben, bevor sie mit dem nächsten Schritt fortfahren. In diesem Artikel wird erläutert, wie Sie mithilfe der PHP- und GD-Bibliothek Bildverifizierungscodes generieren.

GD-Bibliothek ist eine Bildverarbeitungsbibliothek, mit der verschiedene Bildformate generiert, verarbeitet und bearbeitet werden können. PHP verfügt über eine integrierte GD-Bibliothek und bietet viele Funktionen zum Erstellen und Bearbeiten von Bildern. Daher ist es sehr praktisch, PHP und die GD-Bibliothek zum Generieren von Bildverifizierungscodes zu verwenden.

Schritt 1: Verifizierungscode-Text generieren

Zuerst müssen wir eine zufällige Zeichenfolge generieren, die auf dem Verifizierungscode-Bild angezeigt wird. Sie können die in PHP integrierten Funktionen rand() und chr() verwenden, um ASCII-Zeichen einer bestimmten Länge zu generieren:

$code = '';
$length = 4;
for ($i = 0; $i < $length; $i++) {
    $code .= chr(rand(97, 122));
}

Der obige Code verwendet den ASCII-Codewert, um eine vierstellige Zufallszeichenfolge zwischen 97 und 122 zu generieren. Sie können diesen Code ändern, um eine Zeichenfolge mit Zahlen zu generieren oder die Länge der Zeichenfolge entsprechend Ihren Anforderungen zu erhöhen.

Schritt 2: Erstellen Sie eine Leinwand

Nachdem wir den Bestätigungscode-Text generiert haben, müssen wir eine Leinwand erstellen, um ihn anzuzeigen. Verwenden Sie die in PHP integrierte Funktion imagecreate(), um eine Leinwand mit einer angegebenen Breite und Höhe zu erstellen:

$width = 120;
$height = 40;
$image = imagecreate($width, $height);

Der obige Code erstellt eine Leinwand $image mit einer Breite von 120 Pixeln und einer Höhe von 40 Pixeln.

Schritt 3: Hintergrundfarbe und Textfarbe festlegen

Um das Verifizierungscodebild leichter erkennbar zu machen, müssen wir einige Farben festlegen, darunter Hintergrundfarbe, Textfarbe usw. Erstellen Sie eine Farbe mit der in PHP integrierten Funktion imagecolorallocate():

$bg_color = imagecolorallocate($image, 255, 255, 255); // 将背景色设置为白色
$text_color = imagecolorallocate($image, 0, 0, 0); // 将文字颜色设置为黑色

Der obige Code setzt die Hintergrundfarbe auf Weiß und die Textfarbe auf Schwarz. Sie können den Farbwert entsprechend Ihren Anforderungen ändern.

Schritt 4: Interferenzlinien und Rauschpunkte hinzufügen

Um die Schwierigkeit des Bestätigungscodes zu erhöhen, können wir einige Interferenzlinien und Rauschpunkte hinzufügen. Verwenden Sie die in PHP integrierte Funktion imageline(), um Interferenzlinien zu erstellen:

for ($i = 0; $i < 5; $i++) {
    $line_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255)); // 生成一种随机颜色
    imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $line_color); // 在随机位置生成一条干扰线
}

Der obige Code generiert 5 zufällige Interferenzlinien. Sie können die Anzahl der Interferenzlinien je nach Bedarf erhöhen oder verringern.

Verwenden Sie die in PHP integrierte Funktion imagesetpixel(), um Rauschpunkte zu erstellen:

for ($i = 0; $i < 100; $i++) {
    $noise_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255)); // 生成一种随机颜色
    imagesetpixel($image, rand(0, $width), rand(0, $height), $noise_color); // 在随机位置生成一个噪点
}

Der obige Code generiert 100 zufällige Rauschpunkte. Sie können die Lautstärke je nach Bedarf erhöhen oder verringern.

Schritt 5: Text hinzufügen

Zuletzt müssen wir den generierten Bestätigungscode-Text zur Leinwand hinzufügen. Verwenden Sie die in PHP integrierte Funktion imagettftext(), um Text zu erstellen:

$font_path = 'font.ttf'; // 字体文件路径
$font_size = 20; // 字体大小
$x = 20; // 文本起始横坐标
$y = 30; //文本起始纵坐标
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font_path, $code); // 将验证码文本添加到画布上

Der obige Code erstellt einen Text der Größe 20 mithilfe der Schriftartdatei „font.ttf“ und fügt den Text an der angegebenen Position der Leinwand ein.

Schritt 6: Bild ausgeben

Abschließend müssen wir das generierte Bestätigungscode-Bild an den Browser ausgeben oder in einer Datei speichern. Verwenden Sie die in PHP integrierte Funktion imagepng(), um das Bild an den Browser auszugeben:

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

Der obige Code setzt den Ausgabetyp auf image/png und gibt das Canvas $image im PNG-Format an den Browser aus. Es können auch andere Bildformate wie JPEG, GIF usw. verwendet werden.

Der vollständige Code lautet wie folgt:

$code = '';
$length = 4;
for ($i = 0; $i < $length; $i++) {
    $code .= chr(rand(97, 122));
}

$width = 120;
$height = 40;
$image = imagecreate($width, $height);

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

for ($i = 0; $i < 5; $i++) {
    $line_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
    imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $line_color);
}

for ($i = 0; $i < 100; $i++) {
    $noise_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255));
    imagesetpixel($image, rand(0, $width), rand(0, $height), $noise_color);
}

$font_path = 'font.ttf';
$font_size = 20;
$x = 20;
$y = 30;
imagettftext($image, $font_size, 0, $x, $y, $text_color, $font_path, $code);

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

Es ist sehr einfach, Bildverifizierungscode mit PHP und der GD-Bibliothek zu generieren. Befolgen Sie einfach die obigen Schritte. Für diejenigen mit bestimmten Programmierkenntnissen kann der Generierungsprozess weiter optimiert werden, z. B. durch die Verwendung komplexerer Zeichen- oder Zahlenkombinationen, benutzerdefinierter Schriftarten usw. Unabhängig davon, um welche Art von Bildverifizierungscode es sich handelt, ist er ein grundlegendes Instrument zur Verhinderung von Online-Betrug und hat einen wichtigen Beitrag zum Aufbau der Internetsicherheit geleistet.

Das obige ist der detaillierte Inhalt vonGenerieren Sie einen Bildverifizierungscode mithilfe der PHP- und GD-Bibliothek. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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