Heim > Backend-Entwicklung > PHP-Tutorial > Wie schreibe ich mit PHP ein sicheres Anmelde- und Registrierungssystem mit E-Mail-Verifizierungsfunktion?

Wie schreibe ich mit PHP ein sicheres Anmelde- und Registrierungssystem mit E-Mail-Verifizierungsfunktion?

WBOY
Freigeben: 2023-08-18 11:58:01
Original
1490 Leute haben es durchsucht

Wie schreibe ich mit PHP ein sicheres Anmelde- und Registrierungssystem mit E-Mail-Verifizierungsfunktion?

Wie schreibe ich mit PHP ein sicheres Anmelde- und Registrierungssystem mit E-Mail-Verifizierungsfunktion?

Im Internetzeitalter ist Sicherheit der Aspekt, der den Benutzern bei Online-Websites und -Anwendungen am meisten am Herzen liegt. Um die Sicherheit der Benutzerkonten und -informationen zu schützen, müssen wir dem Anmelde- und Registrierungssystem einige Sicherheitsfunktionen hinzufügen, beispielsweise eine E-Mail-Verifizierung. In diesem Artikel erfahren Sie, wie Sie mit PHP ein sicheres Anmelde- und Registrierungssystem mit E-Mail-Verifizierungsfunktion schreiben.

  1. Datenbank erstellen

Zuerst müssen wir eine Datenbank erstellen, um Benutzerinformationen zu speichern. Erstellen Sie mithilfe der MySQL-Datenbank eine Datentabelle mit dem Namen „users“, die die folgenden Felder enthält: ID, Benutzername, E-Mail, Passwort und verifiziert.

CREATE TABLE users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
verified INT(1) NOT NULL DEFAULT 0
);
Nach dem Login kopieren
  1. Registrierungsfunktion

Schreiben Sie PHP-Code für die Registrierungsfunktion. Nachdem der Benutzer das Registrierungsformular ausgefüllt und abgeschickt hat, müssen wir die Eingaben des Benutzers überprüfen und die Benutzerinformationen in der Datenbank speichern.

<?php
// 获取表单输入数据
$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];

// 验证用户输入

// 检查用户名是否已被注册

// 检查邮箱格式是否正确

// 生成一个随机验证码字符串
$verificationCode = bin2hex(random_bytes(16));

// 将用户信息保存到数据库
$query = "INSERT INTO users (username, email, password, verification_code) VALUES ('$username', '$email', '$password', '$verificationCode')";
mysqli_query($connection, $query);

// 发送验证邮件
$to = $email;
$subject = '账号激活邮件';
$message = '请点击以下链接激活您的账号:https://example.com/verify.php?code=' . $verificationCode;
$headers = 'From: noreply@example.com' . "
" .
'Reply-To: noreply@example.com' . "
" .
'X-Mailer: PHP/' . phpversion();

mail($to, $subject, $message, $headers);

// 提示用户验证邮件已发送
echo '注册成功!请检查您的邮箱并点击验证链接进行账号激活。';
?>
Nach dem Login kopieren
  1. Validierungsfunktion

Schreiben Sie PHP-Code für die Validierungsfunktion. Wenn der Benutzer auf den Bestätigungslink klickt, müssen wir prüfen, ob der Bestätigungscode im Link gültig ist, und das Feld „Verifiziert“ des Benutzers in der Datenbank auf 1 aktualisieren, um anzuzeigen, dass das Konto überprüft wurde.

<?php
$verificationCode = $_GET['code'];

// 在数据库中查找匹配的验证代码
$query = "SELECT * FROM users WHERE verification_code = '$verificationCode' LIMIT 1";
$result = mysqli_query($connection, $query);

// 如果找到匹配的验证代码,更新用户的“verified”字段
if (mysqli_num_rows($result) > 0) {
    $user = mysqli_fetch_assoc($result);
    $userId = $user['id'];

    $updateQuery = "UPDATE users SET verified = 1 WHERE id = '$userId'";
    mysqli_query($connection, $updateQuery);

    echo '邮箱验证成功!您可以登录了。';
} else {
    echo '无效的验证链接。';
}
?>
Nach dem Login kopieren
  1. Anmeldefunktion

Schreiben Sie PHP-Code für die Anmeldefunktion. Nachdem der Benutzer das Anmeldeformular ausgefüllt und abgeschickt hat, müssen wir überprüfen, ob die vom Benutzer eingegebene E-Mail-Adresse und das Passwort mit den Datensätzen in der Datenbank übereinstimmen.

<?php
$email = $_POST['email'];
$password = $_POST['password'];

// 在数据库中查找匹配的邮箱和密码
$query = "SELECT * FROM users WHERE email = '$email' AND password = '$password' LIMIT 1";
$result = mysqli_query($connection, $query);

// 如果找到匹配的记录,表示登录成功
if (mysqli_num_rows($result) > 0) {
    $user = mysqli_fetch_assoc($result);
    $verified = $user['verified'];

    if ($verified) {
        echo '登录成功!';
    } else {
        echo '账号尚未激活,请检查您的邮箱并点击验证链接进行账号激活。';
    }
} else {
    echo '邮箱或密码输入错误。';
}
?>
Nach dem Login kopieren

Durch die oben genannten Schritte haben wir PHP erfolgreich verwendet, um ein sicheres Login-Registrierungssystem mit E-Mail-Verifizierungsfunktion zu schreiben. Benutzer müssen bei der Registrierung eine gültige E-Mail-Adresse angeben und ihr Konto aktivieren, indem sie auf den Link in der Bestätigungs-E-Mail klicken. Ein solches System kann die Sicherheit der Benutzerkonten und -informationen wirksam gewährleisten. Wenn sich ein Benutzer anmeldet, prüfen wir außerdem, ob das Konto verifiziert wurde, um ein besseres Benutzererlebnis zu gewährleisten.

Natürlich müssen wir in praktischen Anwendungen das System noch weiter verbessern, z. B. durch das Hinzufügen von Passwortverschlüsselung, Safe Exit und anderen Funktionen, um sicherzustellen, dass Benutzerinformationen sicherer und zuverlässiger sind. Aber dieses grundlegende Login-Registrierungssystem bietet uns bereits einen guten Ausgangspunkt.

Ich hoffe, dieser Artikel kann Ihnen helfen zu verstehen, wie Sie mit PHP ein sicheres Anmelde- und Registrierungssystem mit E-Mail-Verifizierungsfunktion schreiben. Die Stärkung der Sicherheit von Websites und Anwendungen ist wichtig, um Benutzer und Daten zu schützen, und ich hoffe, dass Sie dieses Wissen effektiv in praktischen Anwendungen anwenden können.

Das obige ist der detaillierte Inhalt vonWie schreibe ich mit PHP ein sicheres Anmelde- und Registrierungssystem mit E-Mail-Verifizierungsfunktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage