Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi tetapan semula kata laluan?
Dalam pembangunan perisian moden, fungsi set semula kata laluan akaun pengguna telah menjadi semakin penting, kerana risiko kebocoran kata laluan akaun pengguna juga meningkat. Untuk melindungi privasi pengguna dan keselamatan data, pembangun perlu mereka bentuk struktur jadual MySQL yang selamat dan boleh dipercayai untuk melaksanakan fungsi tetapan semula kata laluan.
Berikut ialah reka bentuk struktur jadual MySQL yang boleh dilaksanakan yang boleh membantu melaksanakan fungsi tetapan semula kata laluan:
Nama jadual: password_reset
Jenis | Penerangan | |
---|---|---|
INT(11) | Kunci utama, penambahan sendiri | #🎜_🎜🎜 # 🎜🎜#INT(11) |
token | #🎜🎜(#🎜🎜 255) | |
masa_luput | 🎜TIME🎜🎜##🎜🎜 #Tempoh sah untuk set semula pautan kata laluan | |
creation_time | TIMESTAMP#🎜🎜🎜 masa | 🎜🎜#🎜 🎜#|
Buat struktur jadual di atas. | 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) ); Salin selepas log masuk |
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插入操作
$token = $_GET['token']; // 从URL参数中获取token $query = "SELECT * FROM password_reset WHERE token = '$token' AND expiration_time >= NOW()"; // 执行SQL查询操作
$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删除操作
Atas ialah kandungan terperinci Bagaimana untuk mereka bentuk struktur jadual MySQL yang selamat untuk melaksanakan fungsi tetapan semula kata laluan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!