Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie Verifizierungscode in PHP

So implementieren Sie Verifizierungscode in PHP

WBOY
WBOYOriginal
2023-05-20 11:31:515965Durchsuche

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:

  1. Bildgröße, Farbe und andere Attribute festlegen
  2. Eine zufällige Zeichenfolge generieren
  3. Die Zeichenfolge in das Bild rendern
  4. Interferenzlinien, Interferenzpunkte usw. hinzufügen.

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:

  1. Speichern Sie die generierte Bestätigungscodezeichenfolge in der Sitzung.
  2. Der Benutzer gibt den Bestätigungscode ein.
  3. Überprüfen Sie, ob der vom Benutzer eingegebene Bestätigungscode mit dem in der Sitzung gespeicherten Bestätigungscode übereinstimmt session

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!

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