Heim > Artikel > Backend-Entwicklung > PHP implementiert die Generierung und Verifizierung von Verifizierungscodes
PHP ist eine häufig verwendete serverseitige Skriptsprache, die nicht nur leistungsstark, sondern auch einfach zu erlernen und zu schreiben ist. Bei der Website-Entwicklung sind die Generierung und Überprüfung von Verifizierungscodes sehr wichtige Sicherheitsmaßnahmen. In diesem Artikel stellen wir vor, wie Sie mit PHP Verifizierungscodes generieren und überprüfen.
1. Was ist ein Bestätigungscode?
CAPTCHA ist die Abkürzung für „Completely Automated Public Turing test to tell Computers and Humans Apart“. Dabei handelt es sich um einen gängigen Online-Verifizierungsmechanismus, mit dem sichergestellt werden soll, dass es sich bei den Benutzern um echte Menschen und nicht um Bots handelt. Ein Verifizierungscode besteht normalerweise aus einem Bild oder Ton, der den Benutzer zur Eingabe der richtigen Antwort auffordert, um zu beweisen, dass er ein echter Benutzer ist.
2. Bestätigungscode generieren
In PHP ist der Prozess der Generierung von Bestätigungscodebildern in mehrere Schritte unterteilt. Zuerst müssen wir ein zufälliges Hintergrundbild generieren und einige Interferenzlinien und Rauschpunkte darauf zeichnen, um die Sicherheit des Bestätigungscodes zu erhöhen. Dann verwenden wir die GD-Bibliothek, um zufällig generierte Zeichen auf das Bild zu zeichnen und schließlich das Bild auszugeben. 🔜 das Formular. In PHP können wir die Überprüfung durchführen, indem wir den vom Benutzer eingegebenen Bestätigungscode mit dem in der Sitzung gespeicherten Bestätigungscode vergleichen.
Das Folgende ist ein Beispielcode, der den vom Benutzer eingegebenen Bestätigungscode überprüfen und zugehörige Informationen anzeigen kann:
<?php session_start(); header("Content-type: image/png"); $width = 100; $height = 40; $length = 4; // 生成验证码字符串 $chars = "0123456789"; $str = ""; for ($i = 0; $i < $length; $i++) { $str .= substr($chars, mt_rand(0, strlen($chars)-1), 1); } // 保存验证码到Session $_SESSION["captcha"] = $str; // 创建图像对象并绘制背景 $im = imagecreatetruecolor($width, $height); $bgColor = imagecolorallocate($im, 242, 242, 242); imagefill($im, 0, 0, $bgColor); // 添加干扰线 $lineColor = imagecolorallocate($im, 200, 200, 200); for ($i = 0; $i < 6; $i++) { imageline($im, 0, mt_rand(0, $height), $width, mt_rand(0, $height), $lineColor); } // 添加噪点 $pixelColor = imagecolorallocate($im, 0, 0, 0); for ($i = 0; $i < 50; $i++) { imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $pixelColor); } // 绘制验证码字符串 $font = 5; $fontColor = imagecolorallocate($im, 0, 0, 0); $fontWidth = imagefontwidth($font); $fontHeight = imagefontheight($font); $x = ($width - $fontWidth * $length) / 2; $y = ($height - $fontHeight) / 2; for ($i = 0; $i < $length; $i++) { $char = substr($str, $i, 1); imagechar($im, $font, $x + $fontWidth * $i, $y, $char, $fontColor); } // 输出图像 imagepng($im); imagedestroy($im); ?>
In diesem Code haben wir dem Formular ein Bildeingabefeld und eine Schaltfläche „Aktualisieren“ hinzugefügt. Wenn der Benutzer auf die Schaltfläche „Aktualisieren“ klickt, wird zufällig ein neues Captcha-Bild generiert. Nachdem der Benutzer Eingaben gemacht hat, wird der Bestätigungscode überprüft, nachdem er auf die Schaltfläche „Senden“ geklickt hat.
4. Fazit
Durch die Generierung und Überprüfung von Verifizierungscodes durch PHP kann effektiv verhindert werden, dass Roboter oder böswillige Angreifer die Website angreifen. Anhand des obigen Beispielcodes können wir erkennen, dass der Prozess der Implementierung des Verifizierungscodes in PHP-Code ebenfalls sehr einfach ist. Insbesondere wenn die GD-Bibliothek zum Generieren von Bildern verwendet wird, kann der Code prägnanter gestaltet werden. Daher kann die Verwendung von PHP-Code zur Generierung von Bestätigungscodes die Privatsphäre und Sicherheit Ihrer Website und Benutzer wirksamer schützen.
Das obige ist der detaillierte Inhalt vonPHP implementiert die Generierung und Verifizierung von Verifizierungscodes. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!