Heim > Artikel > Backend-Entwicklung > So generieren Sie dynamischen Verifizierungscode mithilfe der PHP- und GD-Bibliothek
Mit der zunehmenden Bedeutung der Netzwerksicherheit sind dynamische Verifizierungscodes zu einem gängigen Werkzeug für die Website-Registrierung, Anmeldung und andere Vorgänge geworden. Durch wiederholtes Ändern des Verifizierungscodes können böswillige Angriffe automatisierter Programme wirksam verhindert werden. Als beliebte Back-End-Entwicklungssprache bietet die integrierte GD-Bibliothek von PHP allgemeine Funktionen zum Generieren und Verarbeiten von Bildern und kann problemlos dynamische Verifizierungscodes generieren.
Wie generiert man also dynamischen Verifizierungscode mithilfe der PHP- und GD-Bibliothek? Lassen Sie uns es als Nächstes Schritt für Schritt vorstellen.
Stellen Sie zunächst sicher, dass die GD-Bibliothek auf dem Server installiert wurde. Wenn Sie ein Linux-System verwenden, können Sie es über den Terminalbefehl installieren:
sudo apt-get install php7.0-gd
Unter diesen entspricht 7.0 der aktuellen PHP-Version, die entsprechend Ihrer tatsächlichen Situation angepasst werden kann.
Als nächstes müssen Sie einen zufälligen Verifizierungscodetext generieren. Sie können die PHP-Funktion rand()
verwenden, um eine zufällige Zeichenfolge aus Zahlen und Buchstaben zu generieren, zum Beispiel: rand()
函数生成一串随机的数字和字母组合,例如:
$code = ''; for ($i = 0; $i < 4; $i++) { $code .= chr(rand(65, 90)); }
上述代码中,chr()
函数将ASCII码转换为对应的字符,所以rand(65,90)
表示生成一个65到90之间的随机整数,即A到Z之间的字符。这里生成了4位的验证码,可以根据需要进行调整。
接下来需要创建一个画布,用来展示生成的验证码。可以通过imagecreatetruecolor()
函数创建一个指定大小的真彩色图像:
$width = 100; $height = 50; $image = imagecreatetruecolor($width, $height);
上述代码中,设置了画布大小为100*50像素的真彩色图像。如果需要更改画布大小,可以根据实际需要进行调整。
为了让验证码更加好看,可以通过imagecolorallocate()
函数设置画布的背景颜色。例如:
// 设定背景颜色 $bg_color = imagecolorallocate($image, 255, 255, 255); // 白色 imagefill($image, 0, 0, $bg_color);
上述代码中,将画布的背景颜色设定为白色。
接下来,需要将生成的验证码的每个字符描绘在画布上。可以使用imagettftext()
函数,将每个字符描绘在画布上:
// 描绘验证码 for ($i = 0; $i < 4; $i++) { $font_size = 20; $font_angle = rand(-20, 20); $font_x = 10 + $i * ($width - 20) / 4; $font_y = $height / 2 + $font_size / 2; $font_color = imagecolorallocate($image, rand(0, 100), rand(0, 100), rand(0, 100)); imagettftext($image, $font_size, $font_angle, $font_x, $font_y, $font_color, 'arial.ttf', $code[$i]); }
上述代码中,描绘了验证码中的每个字符。其中,$font_size
表示字符大小,$font_angle
表示字符旋转角度,$font_x
和$font_y
表示字符在画布中的位置,$font_color
表示字符颜色,arial.ttf
表示字体文件。需要根据实际需要进行调整。
最后一步,是将生成的验证码输出到前端页面。可以使用header()
函数设定图片类型,然后使用imagepng()
函数输出图片内容:
header('Content-Type: image/png'); imagepng($image); imagedestroy($image);
上述代码中,使用header()
函数设定图片类型,然后使用imagepng()
函数将图片内容输出到页面上,并使用imagedestroy()
rrreee
chr()
die ASCII-Code zu Entsprechende Zeichen, also bedeutet rand(65,90)
die Generierung einer zufälligen Ganzzahl zwischen 65 und 90, also Zeichen zwischen A und Z. Hier wird ein 4-stelliger Verifizierungscode generiert, der bei Bedarf angepasst werden kann. 3. Leinwand erstellen 🎜🎜 Als nächstes müssen Sie eine Leinwand erstellen, um den generierten Bestätigungscode anzuzeigen. Mit der Funktion imagecreatetruecolor()
können Sie ein Echtfarbenbild einer bestimmten Größe erstellen: 🎜rrreee🎜Im obigen Code wird ein Echtfarbenbild mit einer Leinwandgröße von 100*50 Pixeln festgelegt. Wenn Sie die Leinwandgröße ändern müssen, können Sie sie entsprechend den tatsächlichen Anforderungen anpassen. 🎜🎜4. Legen Sie die Hintergrundfarbe fest🎜🎜Um den Bestätigungscode schöner zu machen, können Sie die Hintergrundfarbe der Leinwand über die Funktion imagecolorallocate()
festlegen. Zum Beispiel: 🎜rrreee🎜Im obigen Code ist die Hintergrundfarbe der Leinwand auf Weiß eingestellt. 🎜🎜5. Zeichnen Sie den Bestätigungscode🎜🎜Als nächstes müssen Sie jedes Zeichen des generierten Bestätigungscodes auf die Leinwand zeichnen. Sie können die Funktion imagettftext()
verwenden, um jedes Zeichen auf der Leinwand zu zeichnen: 🎜rrreee🎜Im obigen Code wird jedes Zeichen im Bestätigungscode gezeichnet. Unter diesen repräsentiert $font_size
die Zeichengröße, $font_angle
den Zeichendrehwinkel, $font_x
und $font_y
stellt das Zeichen dar. An der Position im Canvas stellt $font_color
die Zeichenfarbe und arial.ttf
die Schriftartdatei dar. Muss entsprechend den tatsächlichen Bedürfnissen angepasst werden. 🎜🎜6. Geben Sie den Bestätigungscode aus🎜🎜Der letzte Schritt besteht darin, den generierten Bestätigungscode auf der Frontend-Seite auszugeben. Sie können die Funktion header()
verwenden, um den Bildtyp festzulegen, und dann die Funktion imagepng()
verwenden, um den Bildinhalt auszugeben: 🎜rrreee🎜Im obigen Code: Verwenden Sie header()<. die funktion> legt den Bildtyp fest, verwendet dann die Funktion <code>imagepng()
, um den Bildinhalt auf der Seite auszugeben, und verwendet die Funktion imagedestroy()
Funktion zum Freigeben des Speichers. 🎜🎜Mit den oben genannten Schritten können Sie ganz einfach PHP- und GD-Bibliotheken verwenden, um dynamische Verifizierungscodes zu generieren. Um die Sicherheit zu gewährleisten, müssen der Front-End-Seite natürlich entsprechende Überprüfungsmechanismen hinzugefügt werden, um böswillige Angriffe zu verhindern. 🎜Das obige ist der detaillierte Inhalt vonSo generieren Sie dynamischen Verifizierungscode mithilfe der PHP- und GD-Bibliothek. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!