Heim >Backend-Entwicklung >PHP-Tutorial >Implementierungsmethode der PHP-Bildverifizierungscode-Generierungsfunktion

Implementierungsmethode der PHP-Bildverifizierungscode-Generierungsfunktion

WBOY
WBOYOriginal
2023-06-15 20:58:071365Durchsuche

Implementierungsmethode der Funktion zur Generierung von PHP-Bildüberprüfungscodes

Der Bildüberprüfungscode ist ein Sicherheitsüberprüfungscode, der in Form eines Bildes angezeigt wird und verschiedene Netzwerkangriffe wie Brute-Force-Cracking, automatisierte Skriptangriffe usw. wirksam verhindern kann. Als beliebte Web-Programmiersprache verfügt PHP über integrierte Bildverarbeitungsfunktionen und Bibliotheken, mit denen Bildverifizierungscodefunktionen problemlos implementiert werden können. In diesem Artikel wird eine PHP-basierte Methode zur Implementierung einer Bildverifizierungscode-Generierungsfunktion vorgestellt.

Zunächst müssen wir die Elemente des Bildverifizierungscodes klären: Leinwand, Verifizierungscodezeichen, Interferenzlinien, Interferenzpunkte usw. Als Nächstes werden wir diese Elemente einzeln implementieren, um eine vollständige Funktion zur Generierung von PHP-Bildüberprüfungscodes zu implementieren.

  1. Leinwand erstellen

Um eine Leinwand zu erstellen, können wir die PHP-Funktion imagecreatetruecolor() verwenden. Diese Funktion erstellt ein Echtfarbenbild der angegebenen Größe. Das Folgende ist das Aufrufformat dieser Funktion:

resource imagecreatetruecolor (int $width, int $height)

wobei die Parameter width und height jeweils die Bildbreite und -höhe sind. Hier ist ein Codebeispiel zum Erstellen einer Leinwand:

// 创建画布
$image_width = 140; // 画布宽度
$image_height = 50; // 画布高度
$image = imagecreatetruecolor($image_width, $image_height);
  1. Hintergrundfarbe festlegen

Um die Hintergrundfarbe festzulegen, können wir die imagefill()-Funktion von PHP verwenden. Diese Funktion färbt das Bild und füllt das gesamte Bild mit der angegebenen Farbe. Das folgende ist das Aufrufformat dieser Funktion:

bool imagefill ( resources $image , int $x , int $y , int $color )

wobei der Bildparameter die Bildressource ist, die x- und y-Parameter die Koordinaten des Färbestartpunkts, color Der Parameter ist die Farbe, die mit der Funktion imagecolorallocate() erstellt wird.

Das Folgende ist ein Codebeispiel zum Festlegen der Hintergrundfarbe:

// 设置背景颜色
$bg_color = imagecolorallocate($image, 255, 255, 255); // 白色 
imagefill($image, 0, 0, $bg_color); // 填充背景为白色
  1. Interferenzlinien und Interferenzpunkte hinzufügen

Um die Sicherheit des Verifizierungscodes zu verbessern, müssen wir Interferenzlinien und Interferenzpunkte hinzufügen. Die grundlegenden Bildverarbeitungsfunktionen von PHP können diese Funktionen implementieren.

Um Interferenzlinien hinzuzufügen, können Sie die imageline()-Funktion von PHP verwenden. Diese Funktion zeichnet eine gerade Linie. Das folgende ist das Aufrufformat dieser Funktion:

bool imageline ( resources $image , int $x1 , int $y1 , int $x2 , int $y2 , int $color )

wobei der Bildparameter die Bildressource ist, (x1, y1) und (x2, y2) sind die Start- und Endkoordinaten des Liniensegments, und der Farbparameter ist die Farbe.

Um Störpunkte hinzuzufügen, können Sie die PHP-Funktion imagesetpixel() verwenden. Diese Funktion zeichnet ein Pixel im Bild. Das folgende ist das Aufrufformat dieser Funktion:

bool imagesetpixel ( Ressource $image , int $x , int $y , int $color )

wobei der Bildparameter die Bildressource ist, (x, y) die Koordinate des Pixels. Der Farbparameter ist die Farbe.

Hier ist ein Codebeispiel zum Hinzufügen von Interferenzlinien und Interferenzpunkten:

// 添加干扰线
for ($i = 0; $i < 5; $i++) {
    $line_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255)); // 随机颜色
    imageline($image, rand(0, $image_width), rand(0, $image_height),
        rand(0, $image_width), rand(0, $image_height), $line_color);
}
// 添加干扰点
for ($i = 0; $i < 50; $i++) {
    $pixel_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255)); // 随机颜色
    imagesetpixel($image, rand(0, $image_width), rand(0, $image_height), $pixel_color);
}
  1. Verifizierungscode-Zeichen hinzufügen

Im letzten Schritt müssen wir Bestätigungscode-Zeichen hinzufügen. Verifizierungscode-Zeichen können Zahlen, Buchstaben, Symbole usw. sein. Der Einfachheit halber berücksichtigen wir hier nur numerische Verifizierungscodes.

Um Bestätigungscode-Zeichen hinzuzufügen, können Sie die PHP-Funktion imagestring() oder imagettftext() verwenden.

Bei Verwendung der Funktion imagestring() gibt die Funktion einen String direkt auf dem Bild aus. Das folgende ist das Aufrufformat dieser Funktion:

bool imagestring ( resources $image , int $font , int $x , int $y , string $string , int $color )

wobei der Bildparameter die Bildressource ist und Schriftart ist die Schriftgröße, x und y sind die Koordinaten des Startpunkts der Zeichenfolge, Zeichenfolge ist die Ausgabezeichenfolge und Farbe ist die Farbe.

Bei Verwendung der Funktion imagettftext() gibt die Funktion die angegebene Zeichenfolge in der angegebenen Schriftart, Größe und einem beliebigen Drehwinkel auf der angegebenen Leinwand aus. Das folgende ist das Aufrufformat dieser Funktion:

array imagettftext ( Ressource $image , float $size , float $angle , int $x , int $y , int $color ,
string $fontfile , string $text )

Dabei ist der Bildparameter die Bildressource, die Größe die Schriftgröße, der Winkel der Drehwinkel, (x, y) die Koordinaten des Startpunkts der Zeichenfolge, die Farbe die Farbe, die Schriftartdatei die Schriftartdatei und text ist die Ausgabezeichenfolge.

Das Folgende ist ein Codebeispiel zum Generieren von Bestätigungscodezeichen:

// 添加验证码字符
$code = '';
for ($i = 0; $i < 4; $i++) {
    $digital_color = imagecolorallocate($image, rand(0, 200), rand(0, 200), rand(0, 200)); // 随机颜色
    $digital = rand(0, 9); // 随机数字
    $code .= $digital;
    // 按一定的规则将字符画布输出
    imagettftext($image, 20, rand(-30, 30), $i * 30 + 10, rand($image_height/2, $image_height-20),
        $digital_color, './arial.ttf', $digital);
}

Speichern Sie abschließend die Bestätigungscodezeichen in der Sitzung für den späteren Vergleich und die Überprüfung.

$_SESSION['code'] = $code;

Vollständiges Codebeispiel:

session_start();

header("Content-type: image/png");

$image_width = 140; // 画布宽度
$image_height = 50; // 画布高度

$image = imagecreatetruecolor($image_width, $image_height); // 创建画布

$bg_color = imagecolorallocate($image, 255, 255, 255); // 白色 
imagefill($image, 0, 0, $bg_color); // 填充背景为白色

// 添加干扰线
for ($i = 0; $i < 5; $i++) {
    $line_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255)); // 随机颜色
    imageline($image, rand(0, $image_width), rand(0, $image_height),
        rand(0, $image_width), rand(0, $image_height), $line_color);
}

// 添加干扰点
for ($i = 0; $i < 50; $i++) {
    $pixel_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255)); // 随机颜色
    imagesetpixel($image, rand(0, $image_width), rand(0, $image_height), $pixel_color);
}

// 添加验证码字符
$code = '';
for ($i = 0; $i < 4; $i++) {
    $digital_color = imagecolorallocate($image, rand(0, 200), rand(0, 200), rand(0, 200)); // 随机颜色
    $digital = rand(0, 9); // 随机数字
    $code .= $digital;
    // 按一定的规则将字符画布输出
    imagettftext($image, 20, rand(-30, 30), $i * 30 + 10, rand($image_height/2, $image_height-20),
        $digital_color, './arial.ttf', $digital);
}

$_SESSION['code'] = $code; // 将验证码存入session

imagepng($image); // 输出验证码图片

imagedestroy($image); // 销毁图像资源

Zusammenfassung

Die PHP-Bildverifizierungscode-Generierungsfunktion ist eine sehr praktische Technologie zur Verhinderung von Netzwerkangriffen. In diesem Artikel wird die Implementierungsmethode der PHP-Funktion zur Generierung von Bildüberprüfungscodes vorgestellt, einschließlich der Erstellung einer Leinwand, der Festlegung der Hintergrundfarbe, des Hinzufügens von Interferenzlinien und Interferenzpunkten, des Hinzufügens von Verifizierungscodezeichen usw. Durch die kombinierte Verwendung dieser Elemente können hochwertige und sichere Bildverifizierungscodes generiert werden.

Das obige ist der detaillierte Inhalt vonImplementierungsmethode der PHP-Bildverifizierungscode-Generierungsfunktion. 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