Heim >Backend-Entwicklung >PHP-Problem >So implementieren Sie PHP zur Implementierung der Benutzer-Login-Verifizierungscode-Funktion

So implementieren Sie PHP zur Implementierung der Benutzer-Login-Verifizierungscode-Funktion

PHPz
PHPzOriginal
2023-04-21 09:09:332049Durchsuche

Mit der Entwicklung der Netzwerktechnologie haben Website-Sicherheitsprobleme immer mehr Aufmerksamkeit auf sich gezogen. Als Website-Entwickler müssen wir die Sicherheit der Kontoinformationen und der Privatsphäre der Benutzer gewährleisten. Dabei ist auch die Sicherheit des Benutzeranmeldevorgangs sehr wichtig. Um die Sicherheit von Benutzerkonten zu schützen, müssen wir der Benutzeranmeldeseite eine Bestätigungscodefunktion hinzufügen. In diesem Artikel wird erläutert, wie Sie PHP verwenden, um die Codefunktion für die Benutzeranmeldung zu implementieren.

  1. Was ist ein Verifizierungscode?

Verifizierungscode ist eine Technologie, die Menschen von Computerprogrammen unterscheidet und böswillige Angreifer effektiv daran hindern kann, mithilfe automatisierter Programme Angriffe auf Websites zu starten. Gängige Verifizierungscodes gibt es in verschiedenen Formen wie Zahlen, Buchstaben, Grafiken usw. Benutzer müssen den Verifizierungscode beim Anmelden korrekt eingeben, um die Identität des Benutzers zu überprüfen.

Bei der Website-Entwicklung werden in der Regel Verifizierungscodes in das Anmeldesystem eingebettet, um zu verhindern, dass böswillige Benutzer durch Brute-Force-Cracking und andere Methoden Systemberechtigungen erhalten. Gleichzeitig können Verifizierungscodes auch verhindern, dass böswillige Benutzer automatisierte Programme verwenden, um Daten anzugreifen und zu löschen.

  1. Erstellen Sie PHP-Bestätigungscodes

In PHP können Sie die GD-Erweiterungsbibliothek verwenden, um verschiedene Bestätigungscodes zu zeichnen, darunter Zahlen, Buchstaben, Grafiken usw. Im Folgenden nehmen wir numerische und alphabetische Verifizierungscodes als Beispiel, um vorzustellen, wie man Verifizierungscodes in PHP erstellt.

2.1. Generierung digitaler Bestätigungscodes

Digitaler Bestätigungscode ist die einfachste und häufigste Form der Erstellung von Bestätigungscodes. Numerische Verifizierungscodes können mithilfe von Funktionen in der GD-Bibliothek generiert werden. Unten finden Sie einen Beispielcode, der einen zufälligen 4-stelligen Bestätigungscode generiert.

<?php
session_start(); // 开启 session

header(&#39;Content-type: image/png&#39;); // 设置 Content-type

$im = imagecreatetruecolor(80, 40); // 创建一个宽为80,高为40的验证码背景图
$bgColor = imagecolorallocate($im, 255, 255, 255); // 设置背景色为白色
imagefill($im, 0, 0, $bgColor); // 绘制背景

$code = rand(1000, 9999); // 随机生成一个 4 位数的验证码
$_SESSION[&#39;code&#39;] = $code; // 把验证码存储在 Session 中,以便在其他页面中使用

$textColor = imagecolorallocate($im, 0, 0, 0); // 设置验证码颜色

imagestring($im, 5, 20, 12, $code, $textColor); // 绘制验证码

imagepng($im); // 输出 PNG 图片
imagedestroy($im); // 释放内存
?>

Analyse:

  • Zunächst aktivieren wir die Sitzungsfunktion von PHP, um Verifizierungscodes auf anderen Seiten zu verwenden.
  • Dann geben wir den MIME-Typ des Bestätigungscodes als image/png an und teilen dem Browser damit mit, dass es sich bei der Datei um eine PNG-Bilddatei handelt.
  • Als nächstes verwenden wir die Funktion imagecreatetruecolor, um ein leeres Bild mit einer Breite von 80 und einer Höhe von 40 zu erstellen.
  • Dann legen wir mit der Funktion imagecolorallocate einen weißen Hintergrund fest und füllen mit der Funktion imagefill das gesamte Bild.
  • Anschließend generieren wir einen zufälligen 4-stelligen Verifizierungscode und speichern ihn in der Sitzung.
  • Schließlich verwenden wir die Imagestring-Funktion, um den Bestätigungscode in das Bild zu zeichnen, und verwenden die Imagepng-Funktion, um das generierte PNG-Bild auszugeben. Anschließend zerstören wir die Bildressource und geben den Speicher frei.

2.2. Generierung von alphanumerischen gemischten Bestätigungscodes

Numerische Bestätigungscodes sind anfällig für Angriffe. Um die Sicherheit zu verbessern, können wir die Form von alphanumerischen gemischten Bestätigungscodes verwenden. Ebenso können wir das alphanumerische Captcha mithilfe der GD-Bibliothek von PHP zeichnen. Unten finden Sie einen Beispielcode, der einen zufälligen 4-stelligen alphanumerischen Bestätigungscode generiert.

<?php
session_start(); // 开启 session

header(&#39;Content-type: image/png&#39;); // 设置 Content-type

$im = imagecreatetruecolor(100, 40); // 创建一个宽为100,高为40的验证码背景图
$bgColor = imagecolorallocate($im, 255, 255, 255); // 设置背景色为白色
imagefill($im, 0, 0, $bgColor); // 绘制背景

// 字母数字集
$chars = &#39;0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&#39;;
$len = strlen($chars);
$code = &#39;&#39;;
for ($i = 0; $i < 4; $i++) {
    $code .= $chars[rand(0, $len-1)];
}

$_SESSION[&#39;code&#39;] = $code; // 把验证码存储在 Session 中,以便在其他页面中使用

$textColor = imagecolorallocate($im, 0, 0, 0); // 设置验证码颜色

// 使用随机字体和位置,绘制验证码
for ($i = 0; $i < 4; $i++) {
    $font = rand(1, 5); // 随机选择字体
    $angle = rand(-20, 20); // 随机旋转角度
    $x = $i * 20 + rand(0, 10); // 规定较小的x坐标值和x步进值,y的值也可以自定义 
    $y = rand(20, 30);
    $fontColor = imagecolorallocate($im, rand(0, 255), rand(0, 255), rand(0, 255));
    $char = substr($code, $i, 1);
    imagettftext($im, 18, $angle, $x, $y, $fontColor, __DIR__.&#39;/font&#39;.$font.&#39;.ttf&#39;, $char);
}

imagepng($im); // 输出 PNG 图片
imagedestroy($im); // 释放内存
?>

Analyse:

  • Anders als die Art und Weise, wie numerische Verifizierungscodes generiert werden, müssen alphanumerische gemischte Verifizierungscodes zunächst einen Satz von Zeichen bestehend aus Zahlen und Buchstaben definieren und dann zufällig Zeichen daraus erhalten.
  • Dann verwenden wir dieselbe Methode, um den Bestätigungscode in der Sitzung zu speichern.
  • Das Zeichnen von Zeichen entspricht im Wesentlichen dem digitalen Bestätigungscode, es muss jedoch eine TTF-Schriftartdatei eingeführt werden, um Buchstaben zu generieren. Wir wählen zufällig eine Schriftart und Zeichenposition aus und verwenden die Funktion imagettftext, um die Zeichen zu zeichnen.
  1. Verwenden Sie den Bestätigungscode auf der Website

Nach dem Generieren des Bestätigungscodes müssen Sie nur noch das Programm einführen, um den Bestätigungscode auf der Benutzeranmeldeseite zu generieren. Bei der Überprüfung der vom Benutzer eingegebenen Konto- und Passwortinformationen muss auch überprüft werden, ob der vom Benutzer eingegebene Bestätigungscode korrekt ist.

Das Folgende ist ein Beispielcode für eine Benutzeranmeldeseite.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Login</title>
</head>
<body>
    <form action="login.php" method="post">
        <label for="username">Username:</label>
        <input type="text" id="username" name="username"><br>

        <label for="password">Password:</label>
        <input type="password" id="password" name="password"><br>

        <label for="code">Code:</label>
        <input type="text" id="code" name="code"><br>
        <img src="captcha.php" alt="Captcha">

        <button type="submit">Submit</button>
    </form>
</body>
</html>

Ähnlich wie bei der normalen Benutzeranmeldeseite haben wir bei der Eingabe des Kontos und des Passworts einen Bestätigungscode-Teil hinzugefügt und das Programm zur Generierung von Bestätigungscodes captcha.php eingeführt. Nachdem der Benutzer die Kontonummer, das Passwort und den Bestätigungscode eingegeben hat, klickt er auf die Schaltfläche „Senden“. Das System sendet die vom Benutzer eingegebenen Informationen zur Überprüfung an login.php.

Das Folgende ist der Code in login.php, mit dem überprüft wird, ob die vom Benutzer eingegebenen Informationen zu Kontonummer, Passwort und Bestätigungscode korrekt sind.

<?php
session_start();

$username = $_POST[&#39;username&#39;];
$password = $_POST[&#39;password&#39;];
$code = $_POST[&#39;code&#39;];

// 验证用户输入的验证码是否正确
if (strtolower($code) !== strtolower($_SESSION[&#39;code&#39;])) {
    echo &#39;Invalid Code.&#39;;
    exit;
}

// 验证用户输入的账号和密码是否正确
if ($username === &#39;admin&#39; && $password === &#39;admin&#39;) {
    echo &#39;Login Successfully.&#39;;
} else {
    echo &#39;Invalid Username or Password.&#39;;
}
?>

In login.php überprüfen wir zunächst, ob der vom Benutzer eingegebene Bestätigungscode korrekt ist. Wenn der Bestätigungscode nicht übereinstimmt, wird der Benutzer aufgefordert, einen ungültigen Bestätigungscode einzugeben und die Anmeldeüberprüfung zu beenden. Andernfalls überprüfen wir, ob die vom Benutzer eingegebenen Konto- und Passwortinformationen korrekt sind. Wenn es korrekt ist, wird der Benutzer aufgefordert, sich erfolgreich anzumelden. Andernfalls wird eine Meldung angezeigt, dass der Benutzername oder das Kennwort ungültig ist.

  1. Zusammenfassung

In diesem Artikel wird erläutert, wie Sie mit PHP- und GD-Bibliotheken gemischte numerische und alphanumerische Bestätigungscodes generieren und wie Sie Bestätigungscodes auf Websites verwenden, um die Sicherheit der Benutzeranmeldeinformationen zu gewährleisten. Durch das Studium dieses Artikels haben Sie gelernt, wie Sie böswillige Benutzer davon abhalten können, automatisierte Programme zum Angriff auf Ihre Website zu verwenden, und wie Sie das Konto und die Privatsphäre der Website-Benutzer schützen.

Das obige ist der detaillierte Inhalt vonSo implementieren Sie PHP zur Implementierung der Benutzer-Login-Verifizierungscode-Funktion. 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