Wie entwerfe ich eine sichere MySQL-Tabellenstruktur, um die Funktion zum Zurücksetzen des Passworts zu implementieren?
In der modernen Softwareentwicklung wird die Passwort-Reset-Funktion von Benutzerkonten immer wichtiger, da auch das Risiko eines Passwortlecks von Benutzerkonten steigt. Um die Privatsphäre und Datensicherheit der Benutzer zu schützen, müssen Entwickler eine sichere und zuverlässige MySQL-Tabellenstruktur entwerfen, um die Funktion zum Zurücksetzen des Passworts zu implementieren.
Das Folgende ist ein realisierbares MySQL-Tabellenstrukturdesign, das bei der Implementierung der Funktion zum Zurücksetzen des Passworts helfen kann:
Tabellenname: passwort_reset
Spaltenname | Typ | Beschreibung |
---|---|---|
id | INT ( 11) Primärschlüssel, automatische Inkrementierung generierte Zeichenfolge | |
TIMESTAMP | Ablaufzeitraum des Links zum Zurücksetzen des Passworts | |
TIMESTAMP | Erstellungszeit des Datensatzes | |
Erstellen Sie die obige Tabellenstruktur. | CREATE TABLE password_reset ( id INT(11) NOT NULL AUTO_INCREMENT, user_id INT(11) NOT NULL, token VARCHAR(255) NOT NULL, expiration_time TIMESTAMP NOT NULL, creation_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), FOREIGN KEY (user_id) REFERENCES users(id) ); |
|
function generateToken() { $length = 32; $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; $token = ''; for ($i = 0; $i < $length; $i++) { $token .= $characters[rand(0, strlen($characters) - 1)]; } return $token; } $userId = 123; // 用户的ID $expirationTime = date('Y-m-d H:i:s', strtotime('+1 day')); // 链接的有效期为一天 $token = generateToken(); $query = "INSERT INTO password_reset (user_id, token, expiration_time) VALUES ($userId, '$token', '$expirationTime')"; // 执行SQL插入操作 |
Senden Sie das generierte Token an den Benutzer, und der Benutzer setzt sein Passwort zurück, indem er auf den Link mit dem Token klickt. | Wenn der Benutzer auf den Link klickt, prüfen Sie, ob das Token im Link vorhanden und in der Tabelle „password_reset“ gültig ist. |
$newPassword = $_POST['new_password']; // 从表单中获取新密码 $hashedPassword = password_hash($newPassword, PASSWORD_DEFAULT); // 新密码进行哈希处理 $query = "UPDATE users SET password = '$hashedPassword' WHERE id = $userId"; // 执行SQL更新操作
$query = "DELETE FROM password_reset WHERE user_id = $userId"; // 执行SQL删除操作
Das obige ist der detaillierte Inhalt vonWie entwerfe ich eine sichere MySQL-Tabellenstruktur, um die Funktion zum Zurücksetzen des Passworts zu implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!