Heim > Artikel > Backend-Entwicklung > So implementieren Sie Verifizierungscode in PHP
Mit der kontinuierlichen Entwicklung des Internets müssen immer mehr Websites Bestätigungscodes verwenden, um die Sicherheit zu gewährleisten. Der Verifizierungscode ist eine Authentifizierungstechnologie, die auf menschlichen Fähigkeiten beruht und von Computern nicht geknackt werden kann. Er wird häufig bei der Website-Registrierung, beim Anmelden, beim Abrufen von Passwörtern und für andere Funktionen verwendet. Im Folgenden wird erläutert, wie Sie PHP zum Implementieren der Bestätigungscodefunktion verwenden.
1. Verifizierungscode-Bild generieren
Die Generierung eines Verifizierungscode-Bildes ist der Kern der Verifizierungscode-Funktion. Es muss ein zufälliges Zeichen generiert und als Bild dargestellt werden, um es dem Benutzer anzuzeigen. In PHP können Sie die GD-Bibliothek zum Generieren von Bildern verwenden.
Die GD-Bibliothek ist eine PHP-Erweiterung zum dynamischen Erstellen von Bildern. Sie bietet eine Vielzahl von Funktionen, die zum Erstellen von Bildern, Ändern von Bildern, Speichern von Bildern usw. verwendet werden können. Verifizierungscodebilder können einfach über die GD-Bibliothek erstellt werden.
Die Schritte zum Generieren eines Bestätigungscodes sind wie folgt:
Das Folgende ist eine spezifische Code-Implementierung:
<?php //设置图片大小,这里是120x40 $image_width = 120; $image_height = 40; //创建画布 $image = imagecreatetruecolor($image_width, $image_height); //设置背景色为白色 $bg_color = imagecolorallocate($image, 255, 255, 255); imagefill($image, 0, 0, $bg_color); //生成随机字符串 $code = ""; $charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $charset_length = strlen($charset); for ($i = 0; $i < 4; $i++) { $rand_index = rand(0, $charset_length - 1); $rand_char = substr($charset, $rand_index, 1); $code .= $rand_char; } //将字符串渲染到图像中 $font_size = 20; $font_color = imagecolorallocate($image, 0, 0, 0); $x = 10; $y = ($image_height - $font_size) / 2; for ($i = 0; $i < 4; $i++) { $char = substr($code, $i, 1); imagettftext($image, $font_size, rand(-10, 10), $x, $y, $font_color, "arial.ttf", $char); $x += $font_size + rand(-5, 5); } //添加干扰线、干扰点等 for ($i = 0; $i < 6; $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++) { $point_color = imagecolorallocate($image, rand(0, 255), rand(0, 255), rand(0, 255)); imagesetpixel($image, rand(0, $image_width), rand(0, $image_height), $point_color); } //输出图像 header("Content-type:image/png"); imagepng($image); //销毁图像 imagedestroy($image); ?>
Der obige Code generiert ein zufälliges Bestätigungscode-Bild und zeigt es im Browser an. Darunter werden die Schriftart Arial, schwarzer Text, weißer Hintergrund, 6 Interferenzlinien und 50 Interferenzpunkte verwendet. Kann je nach Bedarf angepasst werden.
2. Überprüfen Sie den Bestätigungscode
Nachdem Sie das Bestätigungscode-Bild generiert haben, müssen Sie den vom Benutzer eingegebenen Bestätigungscode mit dem generierten Bestätigungscode vergleichen, um zu bestätigen, ob der Benutzer den richtigen Bestätigungscode eingegeben hat. In PHP kann die generierte Bestätigungscodezeichenfolge zur späteren Überprüfung in der Sitzung gespeichert werden.
Die spezifischen Schritte sind wie folgt:
Das Folgende ist die Code-Implementierung:
<?php //生成验证码 session_start(); $code = ""; $charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; $charset_length = strlen($charset); for ($i = 0; $i < 4; $i++) { $rand_index = rand(0, $charset_length - 1); $rand_char = substr($charset, $rand_index, 1); $code .= $rand_char; } $_SESSION["captcha"] = $code; //展示验证码图片 $image_width = 120; $image_height = 40; $image = imagecreatetruecolor($image_width, $image_height); $bg_color = imagecolorallocate($image, 255, 255, 255); imagefill($image, 0, 0, $bg_color); $font_size = 20; $font_color = imagecolorallocate($image, 0, 0, 0); $x = 10; $y = ($image_height - $font_size) / 2; for ($i = 0; $i < 4; $i++) { $char = substr($code, $i, 1); imagettftext($image, $font_size, rand(-10, 10), $x, $y, $font_color, "arial.ttf", $char); $x += $font_size + rand(-5, 5); } header("Content-type:image/png"); imagepng($image); imagedestroy($image); //校验验证码 session_start(); if (isset($_POST["captcha"])) { $user_input = $_POST["captcha"]; if (strcasecmp($user_input, $_SESSION["captcha"]) != 0) { echo "验证码错误"; } else { echo "验证码正确"; } } ?>
Im obigen Code wird die Sitzung zum Speichern der generierten Bestätigungscodezeichenfolge verwendet und der eingegebene Bestätigungscode wird mit dem in der Sitzung gespeicherten Bestätigungscode verglichen. Unter diesen ist die Funktion strcasecmp eine Funktion, die zwei Zeichenfolgen unabhängig von der Groß-/Kleinschreibung vergleicht. Wenn sie gleich sind, gibt sie 0 zurück, und wenn sie unterschiedlich sind, gibt sie einen Wert ungleich Null zurück.
Zusammenfassung
Durch die Implementierung der Bestätigungscodefunktion über PHP kann die Sicherheit der Website effektiv gewährleistet werden. Beim Generieren von Verifizierungscodebildern können Sie mithilfe der GD-Bibliothek ganz einfach Verifizierungscodebilder in verschiedenen Farben und Schriftarten erstellen und Interferenzlinien, Interferenzpunkte usw. hinzufügen, um die Sicherheit zu erhöhen. Bei der Überprüfung des Bestätigungscodes muss die generierte Bestätigungscodezeichenfolge für den späteren Vergleich in der Sitzung gespeichert werden.
Das obige ist der detaillierte Inhalt vonSo implementieren Sie Verifizierungscode in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!